TITLE PAGE INTERACTIVE TOY (FURBYpASM - Version 25) INVENTOR: Dave Hampton Attorney Docket No* 64799 FITCH, EVEN, TABIN & FLANNERY Suite 900 135 South LaSalle Street Chicago, Illinois 60603-4277 Telephone (312) 372-7642 iiti» SPC81A Source Code (Version Written by? Dave Hampton / W r e Schulz Date: July 30, 1998 ;* Copyright (CJ 199 6,1997,1998 by Sounds Amazing I i All rights reserved. ItllttiiiililliiillimiiittifiitiiiltlttlliiliiiittMlttiiiiiiiiitKtii iilt * ; remember SBC if there is a borrow carry is CLEARED ; also SBC if the two numbers are equal you still get a negative result till- ;■ MODIFICATION LIST : ; Furby25/30m'32 ; Final testing for shipment o: code on 8/2/98. $ Tables updated „ot updated, wake up/name fix ; sequential tab- « never getting first entry,fixed, ; New diag5.asm, Light3,asm I if light osc stalls it wont hang system] - I f Furbyl3 ; In motor brake routine, turn motrs off before turning reverse ; braking pulse on to save transistors. l ; Furby34 * Cleanup start code and wake routines ; Light sensor goes max lark and stays there co reff time, then l call sleep macro and shut down. ; j Furtoy35 ; Adds four new master eggs,BURP ATTACK, SAY NAME, TtfINkLE SOm , ; and ROOSTER LOVES VOL , Also add new names, l 1 j I s 11 i : ; i: 11 ! : s M i s : s s i f i :; * : ! ! ! : s ! s :; : ; i i i : t i ! f * ! i : s : I : t: s : s i ! s : * I ; Release 3 ;; Pile p testR3a p ■ 1. Light sensor has a hysteresis point of continually triggering sensor, i 2, Light sensor decrescents two instead of one on Hungry counter, ; 3, Diagnos de for light sensor wont trigger very easily, ; 4, When a into y eceives the I.R, sleep command he sends the sense cownand ; out before goU to sleep, i 5, When hungry ia enough to trigger sick counter, each sensor ; deducts two instead of one for each hit. ■ 6. When diagnostics complete c^e&r memory, reset hungry & sick to FF . randomly choose new name an voice, then write EEFRO& before \ going to sleep. Also extendi EEPROM diagnostic to test all locations ; for pass/fail of device. i 1 , Add new light routine ; fi* Change hide and seek egg to light,light * light,tummy, ; 9. Change sick/hungry counter so that it can only get so sick and ; not continue down to zero. (MAX^SICKI < iq, jn diagnostics, motor position test Jff , first goes forward continuously . . ; until the front switch is pressed, then goes reverse continuously ; until the front switch is pressed again, and then does normal position ; calibration stopping at the calibration switch. ;11, On power up we still use tilt and invert to generate startup random \ numbers, but if feed switch is pressed for cold boot, we use it to ; generate random numbers, because it is controlled by the user wh*re ; the tilt and invert are more flfcky, ;12. Ho matter what a^e, 25% of time he randomly pulls speech from age * to generate more Furbish at older ages. ; 13 . Twinkle song egg Vvhen aong is complete, if both front and back switches are pressed ; we goto deep sleep. That means only the invert can wake us up, not ; the tilt switch. liflw _ . ; Actual numeric value for TX pitch control ; bit 1 set * subtract value from current course value ; clr - aad value to cur ent course value ; bit 6 set - select music pitch table * clr = select normal speech pitch table ? bit 0-5 value to change course value (no change = 0) ; A math routine in 'say_0 1 converts the value for + or - ; if <80 then subtracts from 80 to get the minus version of 00 ; ie, if number is 70 then TI gets sent 10 {which is -10J j If number is 80 or > 80 then get sent literal as positive. , NOTE: MAX POSITIVE IS SF {+16 from normal /oice of 00} : MAX NEGATIVE is 2F J-47 from normal voice of 00} rThis is a difference of 8Qh - 2Fh or 51h ; 8Fh is hi voice t8f is very sgueeeeek*} ; 2Fh lo voice t very low) ; The math routine in 'bayJV allows a ^-decimal number in the speech table, i A value of 60 = no change or 00 sent to TI ; 81 = +1 ; 8f * +16 value of 7F = -1 from normal voice ;70 = -16 ; The voice selection should take into consideration that the hi voice ; selection plus an aditional offset is never greater than Bf ; Qr a low voice minus offset never less than 2f. Voi^ 1 EQU 83h ;{+ 3} hi voice Vo c&2 EQU 7Ah ;f-61 mid voice Voice! EQU 7 ih t {-15} low voice ;;;; we converted to a random selection ' tables . use the equate rlus some offset, we -t th* change in the SA\_0 ; routine. We always assign voice 3 whicn is tht lowest* and based ; the random power up pitch selection, the ram location 'Rvoice holds , , _ j the number to add to the voice+offset received from the macro table. Voice BQU Voice3 ;pitch {choose Voicel* Voiced, Voice!J(voiced=norm \ ; select Voice! since it is the lowest and then add the difference to get 4 , ; Voice2 or Voice!> Here we assign that difference to an equate to be ; used in the voice table that is randomly selected on power up. $ voice1 EQU 18 ; Voice 3 + 18d = Voice! £ voice2 EQU 0? t Voice! + G9d * Voice2 ; Motor speed pulse width i ? Motor_on = power to motor, Motor_off is none* Mpu13e_gn EQU 16 Hpulse_o££ E QV 16 Cal_jpos_£wd EQU 134 ;calibration switch forward direction Cal_poeCrev EQU 134 calibration switch forward direction ♦ tiAMAAAAJUUOAAAAAAA^^ ;» PORTS * ; 3 SPC4GA has ; 16 I/O pins 1 ;* PGRT_A 4 I/O pins 0-3 * ; i p 0 RT_C 4 I/O pins 0-3 1 ; i poRT_D 6 I/O pins 0-7 1 SPC40A has j 128 bytes of RAM from $80 - $FF ;* SFC40A has i ; s BANKQ user ROM from $0600 - $7FFF ; 3 BA*IK1 user ROM from $8000 - $FFFR ; i VECTORS s 7 * NMI vector S7FFA / S7FFB 1 l * RESET vector $7FFC / $7FFD * ;» IRQ vector $7FFE / $7FFF ■ AAAAXJUUUUUU^AAMXAAMAAAAAJy^ t ilAAAW^AJUtSAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAAAAAiyUUi f S PORTS * SPCI20A has i 17 I/O pins ;» PORT_A 4 I/O pin# 0-3 * ; 3 PORT_P 4 I/O pins 0 ( 1.2r4,5 ; 3 PORT_C 4 I/O pins 0-3 input only 3 ; 3 PORTED 6 I/O pins 0-7 * ;> SPC12QA has ; ; 1 from $80 - $FF RAM 128 bytea of RAM ; 3 SFC120A has i Lc m i i Hi M tifavn ;* BAKKO user RD i * RANKl user RC ; 1 BANK2 user RC f * BANK 3 user RC '■ . V? $0600 - $7FFA‘ $8000 - $FFFF $10000 - $17FFF $1AOOO - $IFFFF mi vector ;* RESET vector ^ / *teru ;* IRQ vector $7FEE / $7FFF * jAmmxxmAmmMAAAmmAAMAJUAAAmmAAmmCi $7FFA $7FFC VECTORS $7FFB $7 FED k ; unuseable Areas in rom i SPC40A: 8Q00H RA DFFFH should to# skipsd iDmwny areal ; bank 0 =* 600 - 7FFA ; bank 1 * 8000 - DFFF reserved , start 8 EQQ0 - FFFA ;SFC80A: 100QOH M 13FFFH should b# skiped (Dummy areal ; bank 0 = 600 ~ 7FFA ; bank 1 = 8000 - FFFA j bank 2 * 10000- 13FFF reserved , start, at 14000 - 17FFF ■SFC120A: ?SPC120A; 18000H AA 19FFFH should be skiped (Dummy areal * bank 0 = 600 - 7FFA ; bank 1 * 8000 - FFFA ♦ bank 2 = 10000 - 17FFF ; bank 3 = 18000 - 19FFF reserved , start at 1AOOO - 1FFFA ; SPC256A: ; SPC256A: Hon dummy area - SPC512A j ; SPC512A : Non dummy area ; ***#4r*** #*#•*•********■»* ************ **#***-•* .CODE .SYNTAX 6002 . LINKLIST .SYMBOLS ^ aaaaaaaaaaaaaaaaaaa port direction control register aaaaaaaaaaaaaaaaajaaaaaa Fort»_dir EQU 00 ; (write onlyI (4 I/O pin*I controlled with each bit of this register you can 4 t control each pin separately, only as a nibble 0 * input / 1 = output I 7 BITS) ; D 6 D 5 C 4 C 3 E 1 A 0 A i REGISTER {PORT) 1 7654 3210 7654 3210 7654 3210 7654 3210 (PORT BITS) uma AJUUAAAAMAAA^AAAA port configuration control REGISTER kAJUa^XAAAMAAAAAA f Portageon based on if the port pin is input or output EQU 01 ; l write only) (4 I/O pins) controlled with each bit of this register ; ? G 5 4 3 2 1 0 (REGISTER BITS) ; D D C C B B A A (PORT) ; 7G54 3210 7654 3210 7654 3210 7654 3210 (PORT BITS) port_a INPUTS can be either: 0 = float 1 - pulled high ; port_a OUTPUTS can be either: ; 0 - buffer 1 = upper (4) bits Open drain Pmos (source) ; lower (4) bits Open drain Nmos (sink) I port_b INPUTS can be either: 1 0 = float 1 - pulled low ? portjb OUTPUTS can be either: ; 0 = buffer 1 e upper (4) bits Open drain Nteor (sink) ; lower (4) bits Open drain Ninos {sink) ; port_c INPUTS can be either: i C * float l = pulled high ; porter OUTPUTS can be either: ; 0 = better 1 = upper 14) bits Open drain Pmos (source) ; lower (4) bits Open drain Nmos (sink) ; port„d INPUTS can be eithsr: ; 0 ■ float 1= pulled low ; port_d OUTPUTS can be nther: ; 0 = buffer 1 * Open irain Pmos (source) AAAXA ;AAAAAAAAXAAAAAAmAUAmAA I/O POETS AAAAAAAAAAAXAAAAMAAAAAAAAWAaJUUUUAA Fort_A CPU's EQU 02H i (read/write) for TI k speech reegn Data_D0 EQU 01K jbit 0 data nible port Data^Dl EQU 02H F D*ta_D2 EQU 04H f Data_D3 EQU OSH i i* Port JB EQU 03H ;b0/bl * I/O b4/b5 = inp only TT^init EQU ?1K ;B0 - TI reset control TI_CTS EQU 02H ;B1 - hand shake to TI IR_JN EQU 10H , B4 - X,R* Rec^ data TI^RTS EQU 20H j B5 - TI wants data PC EQU 04H i rread/w-ite) Motor_cal EQU 01H ;C0 - lo when mo: crosses switch Pos_se:. EQU 02H ;Cl - motoi ical sensor (intt Cl) Touch^bc :k EQU 04H ;C2 - back touch Toucii^f rnt EQU 08H ;C3 - front touch PortJD EQU 05H ; (read/write} BalInside EQU 01H ;D0 - hi when on any side (TILT) Bal I _i invert EQU 02H ;D1 - hi when inverted LighV^in EQU 04H ;D2 - hi when bright light hits sensor Mic_in EQU OSH ;D3 - hi pulse microphone input Power-on EQU 10H ;D4 - power to rest of circuit Ho totaled EQU 2GH ;D 5 - motor I*R. led driver Hotor^lt EQU 40H ;D6 - motor drive left (forward) Motor^rfc EQU SOH ;D7 - motor drive right (reverse) ,kaxjuxaaxaamaaamaxamaaaaaaxaxaaaxaaa SAAAA DATA LATCH PORTJD XXAJy^AAAAAAJU^AAAAAAXAAAAXAAAAA^ Latch_P EQU G6H ; (read) ; read to latch data from ported* used for wake-up on pin change ; AAXAAAAA)UUUAAAAAAAA>\AXAAAAAAMtAAAAAMAAAAAAAAAAAAAAXXAAAAAAA> i AJ^^.^A' AAAAX ;AAAJUUAAAWAAAAAAAAAAAAA BANK SELECTION REGISTER maaaaaaaaaaaaaaaaaaaaaaaa Bank EQU 07H ; (read/write) xxxxxxxb ; 0 = bank G, 1 = bank 1 ; H 5 4 3 2 1 0 i only two banks in SFC40a ; AAAAAJUUUUUUUUUUUIAAAAAAAMAAAAAAAAAMAAAAAAAAAAAAJUUIAAKAAAAAAAAAAAAA AAA AAAAA ; AAAAAAAAMAAAAAAAAAAAAAAAAAM WAKE UP AAAAAAAAAAAAAAA)U^AAAAAXAAAAAAAAAAAAAAA Wake_up EQU GSH ; (read/write ) xxxxxxxw ; 765432 UO ; (0-disable, 1-enable wake-up on ported change) ; read to see if wake-up, or normal reset ; this is the only source for a wake-up i Always reset stack on wake up, ; AAAAAMAAAAM. ft\.'JUUUUUUkARAXXAAAAAAXXAAAAAXAAXXAXAAAXAWUAAAAAAAAAAAAAAA XAAAA ; AAAAAAXAAAAW UAAMMUUUSAA sleep AAAAAAAAAAAAAAa. uaUUU aaAAAAAAXA Sleep 09H ; (write) xxxxxxxs ; ; 765432 1 0 ; #B(0®don't care, l=s- : writting 1 bitO, i as sleep ; AAAJUU^A AAAAMAA A AAA £A* J^AlUULJUAAAAAAAAAAAAAAAAAJyAAAAAAAAAAAAAAAAAXA XA3UA j AAJUUUUUWAAAAMAAAAAAAM TIMER A CONTROL REGISTER AAAAAmAXAAAAAMJUXAAAAAA ; this needs more work to understand DMH TMA_CON EQU GBH ; (write) ; 76543210 ; m X X X f t Timer on© mode (Q-Timer,l=Count©r) ; ; Bit3: IEI A i IE1= 0: Counter clock® external clock from IOC2 Bit2; T1 A - » 1, TU 0: counter clock® CPUCLK/S192 Bitl; IE0 A; Tl= It counter clocks CPUCLK/6B53v BitO: TO AO IE0= 0: Counter clock* external clock from IOC2 = 1, TOs 0: counter clock* CPUCLK/4 f T0» li counter clock* CPUCLK/64 AAAAA ; AAAAAAAAAAAAAAAAAAAAAAAAAAAA INTERRUPTS AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA Interrupts EQU ODH ; (read/write J I f 7 6 5 4 3 2 1 0 t wmab32le I w = (0=watch dog ON, power-on default 1 U® watch dog OFFI * m = {Q=Timer A generate© NMI INT, l=Timer A generates IRQ INT) ; a = fG=Timer A interrupt off, l=Timer A interrupt on) ; h = (O^Timer B interrupt off, l^Timer B interrupt on) ; 3 * lO^CFU CLK/1024 interrupt off, 1*CPU CLK/1G24 interrupt on) l 2 - {0=CFU CLK/8192 interrupt off, 1=CPU CLK/8192 interrupt on) ; 1 * (0=CPU CLK/6553S interrupt off, 1*CPU CLK/65536 T interrupt on) ; e * t0-external interrupt off, 1*external interrupt on) ; rising edge, from port_c bitl AAAAA ;AAAAAAAAAAAAAAAAAAAAA.-AAAAMAA TIMERS AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA ; There are two 12bits timers, ; Timer A can be either a timer or a counter, {as set by TIKER_CON) ; Timpr B can only be used as a timer. ; i** ; Tillers count-up and on overflow from OFFF to 0000, this carry bit will create an interrupt if the corresponding bit is set in INTERRUPTS register, ; The timer will ^e auto reloaded with the user setup value, and start fr , ; count-up again* ; Counter will res tt by user loading *00 into register TMA_LSB and THAJttSB* ; Counter registers can be read on-t i-fly, this will affect register,,, ; values, or i@set them* ; AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXAAAAAAAAAAAAAAAA*AAA, jlaaxaaaaaaa AAAAA ;AAAAAAAAAAAAAAAAAAAAAAAA TIML^ A ilow byte ) AXAAAAAAAAAAAAAAAAAAAAAAAAAAAJf AA TMA_LSB EQU 10H {read/wri t©> ; all Sbits valid {lower Bbite of 12bit timer) J AAAAAXXAXAAAAWAAAAAAAAXAAAAAJUUUUyu^AAAAAAXAAAXWlWUiAXAXAAXAAAAJUUUX)^ AUXA imjamMAmXmAUAAAA TIMER A (high byte) aaaaaaxaaaaaaxaaaaaaaxmaaaaaa TMA_J*5B EQU 1 IK t read/wri te) j read X X X X 11 10 9 8 timer upper 4bits f 7 6 5 4 3 2 1 0 rite X X t c U 10 9 S timer upper 4bits 1 6 5 4 3 2 1 0 register bit ; t«(0=speech mod©, l~Tone mod©} ; this connects the AUDA pin to either ; the DAC , or Timer generated square wave * f l c=(0=CPU clock, 1=CPU clock/4i ; AAAAmmmAmAAmmmxx AXJUU ;AAAAAAAAAAAAAAAaAAAMAAA TIMER S (low byte )kAAAAAAAAAAAXAAAAAAAAAAAAAAXXAJU TMB_LSB ECU 12H * ; all Shits vaxid (lower Shits of 12bit timer) ; AMAAAAAAAAAAAAAAA^ .AAAAAAAAAAAAA^JJ^AAAAAAAAAiWUUU^AAAAAAAAAAAAAAAAAAA AAAAA ;AAAAAAAAAAAXAAAAAAAAXAX; TIMER B (high byte) mMAXAAAAMXAAAAAAAA; _ „ AAAA TH8LKSB EQU 13H ; read X X X X 11 10 9 a timer upper 4bi ts 1 6 5 4 3 2 1 0 * ; writ© X X t c U 10 9 a timer 1 a ■ *t 4bits i 76543210 register bit ; t=(0“speech mode, l=Tone mode) ; this connects the AUDB pin to either ; the DAC2, or Timer generated square wave ; c=(0=CPU clock, 1-CPU clock/4; ; AAAAAJOAAAAAaAAAAMAAAAAAAAAA^^ .■AAA AAAAA ; AAAAAAAAAAAAAAAAAAAAAAAAAA D/A converters AAAAAAAAAAJU^AAMAXMAaAAAAAAAAAAA DAC1 EQU 14H t (write) DAC2 EQU 15H r (write) ; AAAAAAAAAAAAAAAAMAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAA.UAAA. AAAAA I AAJyMUUUUUUUtAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAJUUUUiAAAAAAAAAAAXAAAAA AAAAA ; this needs more work to understand JMH 16H ADCoutputPortlSH: ; Bit7r I/O 0: Disable ADC; 1: Enable ADC I Bit6; I/O ; BitSs I/O ; BiUi I/O ; Bit! ; I/O f Bit2: I/O l Bitl; I/O ; BitO: I/O ^AAAAAAAMAAAAmjUUUUUAmJUWJSUmAJUUlAAAAAAAAAAAAXAAAAAAAAAAAAAAAAAA ; ^AAAAAAAAAAAAAJU^AAAAAAAAAAAAAAAAAAAAAAAAAJ* HAS JiAAA; ; 3 Operating equate definition i AAMAAAAAAXW*AAAAAiUULAAAAAAA>AAAAAAXAAAAAAAAA?iAAAAO ;EQde f ; co calculate samp! ; CPU clk/santple rat- ; Hi & Lo timer reg com ; FFF - divisor = valu- ;©xi 6mH2 elk = 166nSEC = FFF oa 1 hi k lo reg. start Tracker */* here is soar definition chnge of time interrupt constant '/Tracker ;SystemClock: 6000000 ;Select 6000000Hz it will be thfc SysteraClock : use that 3579545 ;as before ;Select 3579545Hz While we a** ;crystal TmeA_lcw; definition TimeA^hi: < U09 6-(SystemClock/5859)) > 14096 “(Sys temClock /5 8 5 9 )J ;put constant TimeB_low: TimeB hi : <(4096-(SystemClock/1465 }) > f4096-(SystemClock/1465)j end Tracker Port_de£ EQU A7h ;D hi=ouc + D 10=1*^ / C hi“out t C lo=inp ;B hisinp t B lo=out / A hi=out t A logout Con def 50H ;D hi*out buffer, D lo-in pull lo ;C hi*out buffer, C lo=in p. d hi ;B hi = in hi-2 r B lo-out buffer ;A hi=out buffer, A logout buffer Intt„df 11 EQU D0h ?sets interrupt reg = no .’atchdog p irq ; timer B , and EXt port C bit 1 = off ;+*+** run EQU's A*I0 ; S«nd a braking pulse to stop motor drift, and this EQU is a decimal number ■ that determines how many times through the 2.9 msec loop (how many loops } ; the brake pulse is on. If at tempting to make single count jumps, the ; brake pulse needs to be between 26 and 30. For any jump greater than 10 J braking between 22 and 80 is acceptable, ( Long jumps are not critical ; but short jump will begin to oscillate if braking is too great.) ; 60 long k 20 short work at 3 - 6v and no pulse width Dnft^long EQU 60 ;number times thru intt before clearing pulse Drift_sho^t EQU 25 ; ; set this with a number from 0 - 255 to determine timeout of all sensors ; for the sequential increments, if it times out the table pointer ; goes back to the start, else each trigger increments through the table. ; NOTE: this time includes the mctor/speech execution time til Global_time EQU 16 ; 1= 742 mSEC j; 255 = 1 .3 seconds ; This determines how long Firby wait* with no sensor activity, then ; calls the Bored_table for a random speech selection, ; Vt a number between 1 k 255, Should probably not be less than 10. ; SHOULD BE > 10 SEC TO ALLOW TIME FOR TRAILING OF SENSORS Bored, eld EQU 4D ; 1 = 742 mSEt ;; 255 « 189.3 seconds ; Each sensor has a sequential random sp. , which must equal 16. ; Each sensor has a different assignment, ; The tables are formatted with the first X assignments random ; and the remaining as sequential■ Seq_front EQU & Ran w front EQU 6 Setback EQU 9 Ran,ba ck EQU 7 Seq^tilt EQU 10 Rar^tilt EQU 6 Seq^invert EQU 8 Ran_invert EQU 8 Seq^sound EQU 0 Ran^soursd EQU 16 Seq^Iight EQU 0 Raiuli^ht EQU 16 Seq^feed EQU 8 Ran_£eed EQU 8 Seq^wake EQU 0 Ran_wake EQU 16 Seq^bored EQU 7 Ranches red EQU 9 Seq_hunger EQU 5 Raruhunger EQU 11 Seq^sick EQU 4 Ran_sick EQU 12 ; rev furbXlja ; Each sensor also determines how often it xe random cr sequential ; as in 50/50 or 60/40 etc. ; These entries are subtracted from tho random nurber generated ; and determine the split, fthe larger here, the more likely sequential pick) Tilt_split EQU 80h f Inver t_spl it EQU BOh Front_spl it EQU 80h ; Back„split EQU 80h Feed_spli t EQU BQh 5ound_splic EQU SOh Light„split EQU 80h Bored_eplit EQU 8 Oh Hunger_Hplit EQU 80h Sick„split EQU BOh ; Randam^age EQU 30h ; at any age, below this number when a ; random number is picked will cause him ; to pull from the age 1 table. More Furbish. L««nL.chg EQU 31 ; amount to inc or dec training of words Food EQU 2flh ; amount to increase ' Hungry' for each feeding Keed^food EQU BOh ;below this starts complaining about hunger Sick_reff EQU 6Oh ;below this starts complaining about sickness Really^sick EQU COh :below this only complains about sickness Ma*_sick EQU 8Qh ;cant go below this when really sick Hungry__dec EQU 01 ; subtract X amount for each sensor trigger Sick^dec EQU 01 ;subtract X amount for each sensor trigger f , * r*. — «■ * -»«».«■**-» — — ^ Ntjword EQU FEH jturn speech word active off Nt„la$t EQU FBH ;bit 2 off - lar^ word sent to TI A-12 equ F7h /bit 3 off -terminator to speech TI Clr_«pch EQU FCH ; el ears apch^_activ & word^_activ CTS_l0 EQU FDH ;makes TI_CTS go lo ? *" Motor_rev EQU FDH ;clears motor fwd bit Hotor_inactv EQU FEh /kill motor activ bit Motor_nteeek EQU FBh ;kill motor seek bit Hotor„off EQU CGh ;turns both motor lines off (hi) Motor_revs EQU 7FH /bit 7 lo Hotor^fwds EQU BFh /bit 6 lo Ntmot on EQU DFh /clears motor pulse on req Nt JOtQun EQU F7h /clear IRQ stat NtJKotor_led EQU DFh ;noLor opto led off Motor^led^rst EQU 100 ;X * 2.9 millSec for shut off time Nt_Ini t _jao t o r EQU FBh ;cks motor speed only on wake up NT_Init_Mspeed EQU F7h /clears 2nd part of motor speed test Op t o_epd_r eld EQU 80 /number of IRQ to count opto pulse speed Spee4„ref f EQU 30 /value to adjust speed to Ntjmacro__actv EQU 7Fh /clears request * Not Jbside EQU F7h /clear ball side done flag Not_>invrt EQU EFh /clea;' ball invert done flag Not_tcl\_bfc EQU EFh /cleat touch back sense done flag Kot_tch_ft EQU DFh /clear touch back sense done flag Not_feed EQU FDh /clear feed sense done flag Sound_reload EQU 05 ;X * 742 milisec time between trigger Snd_cycle_j tried EQU 02 /sound sense referrence cycle timer i Light_reload EQU 07 ;X p 742 miilsec until new reff level set Nt_Slot_dn EQU FEh ;clr IR slot low detected Nt_H_reff EQU EFh /turns reff off Nt„lght_stat EQU FEh ;clears light bright status to dim status ;;; Bright 4 Dim equates have been moved to the light include file. J;/Bright EQU 05 /light sensor trigger > reff lev^l ;/? Dim EQU 05 /Light sensor trigger < reff ;——— ;Qi k_sna_re1oad EQU 01 ; ;Nt_snd_ref f EQU DFh /kill sound reff level bit Nt_do_snd EQU FEh /clears sound state chancre req Nt_snd_stat EC T T FBh /clears Sound_stat Nt ^fortune EQU FEh /kills fortune teller mode Nt_Rap EQU FDh /kills fh*p mode Ntjkl deseek EQU FBh /kills Hide a seek game mode Nt^aimon EQU i 7h /kills eimon say game mode * Nt_do_ tummy EQU F7h /clears sensor change req f^t_do_back equ EFh /clears sensor change req Nt_do,_ feed EQU DFh ;clears sensor change ieq Nt_do_ti.lt EQU BFh /clears sensor change ^eq Nt_do_invert EQU 7Fh /clears sensor change req Nt_do_lt_brt EQU FDh /clears sensor change req Nt_do_lt_dim EQU FBh ;c1ears sensor change req j “ ““ Nt_t«stp_gajml EQ'J FEh ;clears game mode bits Nt_hal£_age sou SFh ;clears rag for 2 tal © instead of 4 Nt^randm EQU 7Fh ;clears random/segue tial status GameT_reload EQU 24 ; lc 742 mSEC ;; 255 x 189,3 seconds ; 5 Variable definition (Ram = $60 to $FFJ i Rdef ;***** DO NOT CHANGE RAN ASSIGNMENTS {X pointer used as offsett) ;.*o***** The next group of RAM locations can be used by any ; sensor routine but cannot be used to save data. t TEMP ONLY ! * koball TEMPO equ eoh TEMPI equ Blh TEMP2 equ 82h TEMP3 equ 63h TEKP4 equ 84h IN_DAT equ 8Sh J #»#** * * * * end koba 1 1 ;* END TEMP RAM W » P Task_ptr EQU 86h fwhat function is in process Port_A_image EQU 87h Port_B_Image EQU S8H ;output port image Fort_D_Iraage EQU 89H ;output port image Word_lo EOU SAh ;speech word lo adra Word_hi EQU 6Eh t m * hi p Saysent_lo EQU 8CH ;saysent word pointer Saysent_hi EQU SDH ■ " Bankj>tr EQU 8 EH which bank words are in Wh.ich_word EQU 8FH which word or saysent to call S’* i oup EQU 9OH ;which aayaent group table Tx_data EQU 91H ; * w ^ ■ Whichu.motor EQU 92h ;holds table number of motor positon Mgroup EQU 93H ;which motor group table Kotor_lo EQU 94H Motptr_lo EQU 95h table pointer to get motor position Motptr_hi EQU 9 6H Which^delay EQU 97H how much time between motor calls Intt^Temp EQU 96H Dri£t_£wd EQU 99h time motor reverses to stop drift Drift_rev EQU 9Ah Pot^timeL EQU 9Bh motor uses to compare against current pcsiton ; moved to hi rain rhat is not cleared on power up j Pot_timeL2 Moff^len EQU 9Ch ;holds motor powur off puls© time Hon^len EQU 9Dh ;hold? motor power jn pulse time Motor_pulsel EQU 9Eh ;motor pulse timer Slot_vote EQU 9Fh ;need majority cnt to declare a valid slot. tn&N A~14 , *otor_led_t inter EQU AGh :how long after motion done led on for IR Mot^speedwcnt EQU Alb ; motor speed test Mot_opto_cnt EQU A2h i ‘ Cal_switch,cnt EQU A3h jused to eliminate noisy reads motorstopee equ A4h i times wheel count when stopping Drif t_count m r EQU ASh decides how much braking pulse to apply Mili^sec EQU A6h ; used in calc pot position by timer Cvcle_timer EQU A7h ; bypasses intt port c updates to motor Sens or _t inter EQU A8h ;times between sensor trigger Bored_timer EQU A9h ; time with no activity to random speech * Invrt^count EQU AAh ; which speech/motor call is next Tilt_count EQU ABh ;which epeech/motor call is next Tcb f m t__c oun t EQU ACh ; which speech/motor call is next Tchbck_count EQU ADh t which speech/motor call is next Feed_count EQU AEh ; which speech/mator call is next t "■ Last^IR EQU AFh ; last IR m ample data to compare to next Wait^time EQU BOh ;used in IRQ to create 2 . SmSec timers Light^timer EQU Blh jLight sensi- routines Lght^count EQU B2h ; which epeech/motor call is next Light^reff EQU B3h ;holds previous sample i Soundstimer EQU B4h ;time to set new reff level Sound_cour.t EQU BSh ; which flpeech/motor call is next Kilisec_flac EQU B6h ;set every 742 millseconds Macro_La FOU B7h ; table pointer HacroJHi EQU B8h * " Egg_cnt EQU B9h ; easier egg table count pointer # Koball code rev B HCEL_LO EQU BAh ; HCEL„EI EQU BBh BIT_CT EQU BCh i *********** ft * * * * end kohall Lig; .Shift EQU » t 4 tt i BDh ***** ; ( was TMA_INT J used for threshold charge Prev^random EQU BEh ;prevent* random number twice in a row BoreS_count EQU BFh ;sequential selection for bored table TWP5 EQU COh ; general use also used for wake up Temp_ID2 EQU Clh ;use in sensor training routines Temp_ID EQU C2h ;use in sensor training routines Leam_temp EQU C3h ;use in sensor training routines Reqjra&cro^lo EQU C4h jholda last call to see if sleep or IR req Reqjmacro^hi EQU C5h ; Sickr^count EQU C6h ;sequential counter for sick speech table Hungr”count EQU C7h ;sequential counter for hunger speech table A-/5 Motor_pulse2 EQU CSh ; motor pulse timer DO WOT CHANGE BIT ORDER StatJ) Equ C9h ;System status Want^nmne EQU 01H rbit 0 *set forces system to say Furpy's name Lt„prev_dn EQU 02H ;bit 0 = done flag for quick light changes Initjootor EQU 04 H ibit 1 - on wftkeup do motor speed/batt test Init_Mspeed EQU OSH rbit 3 = 2nd part of motor speed test TrairtJBk^prev EQU 10H bit 4 * set when 2 back sw hit in a row Sav _n»w_name EQU 20H bit S = only happens on cold boot REU da rk_ sleep EQU 40H bit 6 a set -dark level sends to sleep Dark_e1eep_prev EQU 0OH bit 7 n if set on wake up thendont gotosleep Stat^l EQU CAH ;system status Word^activ EQU G1H ; bit 0 = set during any speech Say_activ EQU G2H ;bit 1 = when saysent is in process Word_end EQU G4H ;bit 2 = set when sending FT word end to TI Word^tertr EQU OBH ;bit 3 = set to send 3 tffh to end speech Up_light EQU 10H ;bit 4 = set when shift is incrmntg Snd_re t £ EQU 20H ;bit 5 a set for new referrenc cycle Half_ag© EQU 40H ; bit 6 “ set for 2 tables of age instead of 4. Randro^ael EQU SOH ;llt 7 =decides random/sequential for tables Stat_2 EQU CBN system status more Motor^actv EQU 01H ;bi t 0 - set = motor in motion Motor^fwd EQU 02 H ;bit 1 = set=£wd clr-rev Motor^seek EQU 04H jbit 2 = seeking to next position Bside^dn EQU 8H ;bi t 3 = set = previously flaged Binvrt^dn EQU 10H ;bi t 4 = set- prev done Tchft_dn EQU 2 OH ;bi t 5 - * Tchbk_dn EQU 40H ;bit 6 m " Macro_actv EQU 8 OH ; bit 1 =set when macro in process # Stat_3 EQU CCh ; system status Lght_stat EQU 01H ; bit 0 - set=bright clr = dim Feed_dn EQU 02H ;bit 1 = set- prev done Sound_stat EQU Q4H ;bit 2 * IRQ__dn EQU OSH ;bit 3 * set when IRQ occurs by IRQ Lt^ref f EQU 10H ;bit 4 = set for light sense reff cycle Motor_on EQU 20H ;bit 5 = ^et=motor pulse power on forward EQU 40K ;bit 6 & lr * move motes: forward BLreverse EQU SOH ; hi t 7 =c!r * move motor reverse ; *****Mi^MO*.... ; Following bit maps are reserved for easier egg / games Stat_4 EQU CDh i system task request state Do^snd EQU GlH jbit 0 » set when sound > prev reff level Do_lght_brt equ D2H ;bit 1 » Bet when light > prev reff level Do_lght_dim EQU 04H ; bi t 2 - set when 1 ight < prev reff level Do_tummy EQU OSH jbit 3 * set when front touch triggered Dojback EQU 10H ;bit 4 x feat when back touch triggered Do^feed EQU 20H ?bit 5 » set when feed sensor triggered EQU 4 OH ; bit 6 ^ set when tilt censor triggered Do_inv«rt EQU SOH ;bit 7 = set when inverted sensor triggered Stat_5 Equ CEh ;gama status terap_gaml EQU G1H ;bit 0 =uaed in game play t«mp_gam2 EQU D2H ;bi t 0 r " » * temp_gaJu3 EQU 04H ? bit 1 « terop_gam4 EQU OSH ;bit 3 * temp^gamS EQU 10H ;bit 4 * temp_gam6 EQU 20K ;bit 5 * teinp_gair7 EQU 4GH ;bit 6 s teB$f_gamS EQU SO H ;bit 7 * f Game_ 1 EQU CFh jsystem game status Fortune^/aode EQU 01H ibit 0 =set = furby in fortune teller mode Rap_mod© EQU 02H ;bit 0 =set - furby in RAP SONG mode H i des eekjnode EQU 04H ;bit 1 -set * furby in hide k seek game mode Simons ay_jmode EQU OSH 7 bit 3 *set » furby in simon says game mode Burp^mode EQU ; bit 4 *set « mode Ntae^mode EQU 2dH ;bit 5 x Twinkle_mode EQU 40H ;bit 6 * Rooster_mode EQU SOH fbit 7 ■ i Qualifyl: EQU DOh ;easter egg disqualified when clear DQ_f or tune EQU Olh ?bit 0 = fortune teller DQ_rap EQU 02h ;bit 1 = rap song * DO hide EQU 04h ; bit 2 = hide and seek DQ_simon EQU OSh ; bit 3 3 = simon says DQUburp EQU lOh ;bit 4 » burp attack DO name EQU 2 Oh ;bit 5 = says his name DO twinkle EQU 40h ?bit 6 = sings song DQ_rooster EQU aoh ; bit 7 * roc et«r 1eves you THIS GROUP OF RAM IS SAVED IN EH PROM ; Need to read these from EEPROM and do test for false data t *age" uses bit 7 to extend the *age_counter" to 9 bits, and this ; is saved in EERFQm also. ;-AGE* MUST RE IN Dlh BECAUSE EEPROM READ k WRITE USE THE EQU FOR START RAM - Age EQU Dlh ; age * 0-3 (4 total) Age^countsr EQU D2h ; inc on motor action,rolls over k inc Name EQU D3h jholda 1-6 pointer to firby’s name Rvoice EQU mb ;which one of three voices Pot_t lmeL2 EQU D5h i counter from wheel I,R. sensor Hungry_coun ter EQU D6h ;holds hungry/full counter Sick_counter EQU D7h ;healthy/sick counter EQU D8h ;only seed 1 k seed 2 are saved SaedL2 EQU D9h j * » p ; These are used for training each sensor. There is a word number which i is 1-16 for the sesnor table macro list and a ram for count which ; determines how often to call the learned word. ; *** DO NOT CHANGE ORDER-RAH adrs by Xreg offset Tilt gleamed EQU DAh ;which word trained 1 Tilt_lm_cnt EQU DBh ;count determines how often called 2 FeedLl earned EQU DCh ;which word trained 3 FeedLlm.cnt EQU DBh ;count determines how often called 4 L1ght_learued EQU DEh ;which word trained 5 Light_lm_cnt EQU DFh ; count determine now often called 6 Dark.learned EQU EOh ■which word trained 1 Dark_Irn^cnt EQU Elh ;count determines how often called 8 Front_learned EQU EZh jwhich word trained 9 Fr on t _ 1 m_cn t EQU E3h ;count determines how often called 10 Soundslearned EQU E4h ;which word trained 11 Sound, lm.cnt EQU E5h ; count determines how often called 12 Wake,learned EQU Efh ;which word trained 13 Wake_lrn_cnt EQU E7h ;count determines how often called 14 Invert.learned EQU ESh ;which word trained 15 Inver t.I rn_cn t EQU E9h ;count determines how often called 16 i next is equates defining which ram to use for each sensor ; according to the sensor ram defined above, (compare to numbers above) Tilt.ID EQU 00 ; defines what offset for above..ram definitions F«ed_ID EQU 02 . *■ r LightsID EQU 04 i * Dark_ID EQU 06 t Front .id EQU 08 ; * Sound_ID EQU 10 - « Wake.ID EQU 12 j * Invert.ID EQU 14 * “ Back.ID EQU EEh ;special value triggers learn mode ; For power on test, WE only clear ram to E9h and use EAh for a ; messenger to the warm boot routine. We always clear ram and initialize i registers on power up, but if it is a warm boot then read EEPROM ; and setup ram locations * Location EAh is set or cleared during power up ; and then the stack can use it during normal run. Wam*oold EQU EDh ; Spells eedl EQU EEh ; Spcl.seed2 EQU EFh ; Deep.sleep EQU F0h ; 0-no deep sleep llh is. (tilt wont wakeup) Need to allow stack growth down ( EAn- FFH ) A-18 Stacktop EQU FFH ;Stack Top *** * * * * * ORG 00H BLKW 300H,GOH ;Fili 0000 AAA 05FFH- 00 ; CAAAAAAAAAAAAAAAAAAAAAAA z . ’ 1 ) > PROGRAM STARTS HERE J * * * ; AAAAAAAAAAAAAAAAAXAAAAAXAAAAAJU^AAAAIAAAAAAAAAAAAAAAAAAAO ORG OOOOH RESET: Include Wake2.asm ; asm file end Tracker i For power on test, WE only clear ram to E9h and use EAh for a ; messenger to the warm boot routine. We always clear ram and initialize ; registers on power up, but if it is a warm boot then read E 'PROM ■ and setup ram locations. Location EAR is set or cleared duri. j power up ; and then the stack can use it during normal run. ; clear RAM to 00H ! - — ----- - ----- ; data for fill ; start at ram location ; base 00, offset x ; next ram location check for end i branch, not finished ; fill done LDA LDX tOOH IE9H 00, X I7FH RAMClear A-19 Haiti? initio? LDA STA *01 DAC_ctrl turn DAC on ;DAC control LDA STA #Port_def Ports_dir ;set direction control ; load reg LDA STA iCon_def Pcrts^con ; set configuration ; load reg LDA STA LDA STA LDA STA too Bank tOCH Wake_up #DOh Sleep ; set for hank G ;set it ;disable waXeup control ;disable sleep control ;set dont care LDA STA *Intt_dflt -Initialize timers. Interrupts ;lead reg etc. LDA STA LDA STA #00H TKA^CON KTimeA_low ™A_LS£ ; set titaer mode i set reg ;get preset timer for interrupts i load LDA STA #TiitieA_hi TMA^KSB ;get hi byte for preset ; icad it LDA STA LDA STA *TimeB_l©w TOB^LSB TKS_MSB ;get preset timer for interrupts ; load ;get hi byte for preset ;load x t LDA STA SCGh Stat_3 ? preset status for mot orr J off LDA STA IOOK Port_A ;init ports ; output LDA STA STA *33H ; init ports Port_B_Image ; ram image Fort_B ; output LDA STA #0VH Port_c ;init ports ;output LDA STA STA tDCH rinit ports For t_3D_ Image ; ram image Port JD ; output LDA STA ttFFh Mili_sec rmilisec timer reload value ;&lso preset IRQ timer CLI ;Enable IRQ A-2Q JSF Kick_IRQ ; wait for interrupt to reStarr JSR TI_reset ;go init TI (uses 1 Cycl^ t L iamr r \ . Preset motor speed, assuming mid hotter life, we set the pulse width ; eo that the motor wont he running at 6 volts and bum out. We then ; predict what the pulse width should foe for any voltage. * LDA frMpulse_on ;preset motor speed LDA #11 STA «on„len ; set motor on pulse timing LDA t05 * STA Hoff_len ;set motor off pulse timing i Include Diag'V.asm ;asm file ****** Only called by diagnostic speech routines Be sure to set 'MACRG_iLl T and all calls are in that 128 byte block. Diag_jmacro: STA Macro L.c LDA *0b8h diag call CLC ADC Kacro_Lo STA M^crc_Lo LDA #01 STA Macro^Hi *JSK Get_jrtacrc JSR RTS Kotrdy ; save lo byte of Macro table entry ;f 90 h , offset to adrs-400 added ;add in offset ; Update jget hi byte \urs 400 * 19Oh ;save hi h te of Macro table entry ;go start motor/speech ■Do f get status for speech and motor ;yo ! * Enter with Areg holding how many 30 mill second delay cycles STA TEMPI ;save timer d2: LDA #10 ;oet 1/2 sec STA Cycle_timer ;set it d3 j LDA Cycle timer ;ck if done BME Half_d3 ; loop DEC TEMPI ; BNE Ralf_d2 ; loop RTS f done {y * 2.9 roSecJ Testjbyp: ;We assume diagnostic only runs on coldboot LDA #FFh jinitialise word training variable 5TA Temp^ID LDA tFFh ; STA Hungry^counter ;preset furby's health STA Sick_counter ; We sit here and wait for tilt to go away, and just keep incrementing ; counter urril it does* This becomes Lhe new random generator seed* INC LDA AND BNE LDA STA STA TEMPI Port_D #G3 Init_md TEMPI Spcl_seedl Seed_l ;random counter ;get switches ;check tilt & invert sw *loop til gone ;get new seed ; stuff it ;also load for cold hoot ; Use feed sw to generate a better random number JSK Get^feed ; go test sensor LDA Stat_4 ;get system AND #Do_£eed ; ck sw ENE Feed_rnd k ; if feed sw then cold boot JMP End^coldittit ;else do warm boot Feed_md: INC TEMPI ; random counter LDA Stat_4 ;sys tem AND #DFh ; clear any prev feed sw senses STA Stat_4 ;update JSR Get_£eed ; go test sensor LDA Stat_4 ;get system AND *Do_feed r ck sw BNE Feed_ md rwait for feed to go away LDA TEMPI :get new seed STA Spcl_.seedl ;stuff it STA $©ed_l ;also load for cold boot j l IF this is a cold boot „ reset command then clear EEPROM and t chose a new name and voice, Do„cold_booti LDA It 00 STA Warnt_cold ; flag cold boot A-22 LEA St a t_0 j system ORA #Say_n©w_narti,© ;moke system say new name STA Stat_0 j " * * * NOTE ;:;t: VOICE AND MAKE ELECTION HOST HAPPEN BEFORE EEPROi WRITE OR THEY WILL ALWAYS COME UP 00 because ram just got cleared!J1J!! ; Random voice selection here LDA i8Gh ;ge . random/sequential split STA IN_DAT ;save for random routine LDX #00 ;make ■ sure only gives random LDA #l0h ?yet number of random selections JSR Ran_s eq ;go get random selection TAX LDA Voice_table p X ?get new voice STA Rvoice ;®et new voice pitch ; On power up or reset, Furby must go select a new name , tt ahw how cute, JSR Random j AND #lFh ; get 32 possible STA Name ; set new pointer JSR Do_E£_writ© ;write the EEPROM End_coldinit: itliiiiliitlltiltlttiiitttiiilltiliiiiltttitttttitttttiltttttiiiiit.tt ;» ■Special initialization prior to normal run mode • ; * Jump to Wanr._boot when portD wakes us up Warnuboots ;nc nal tart when Port^D wakes ur up* JSR S_EEt. M_READ ;read data to ram j Epronurea(Lbyp: I f If light osc fails, or too dark and that sends us to sleep, we ; set *Dark_sl>ep_prev* and save it in EEPRGM in 1 Seed_2 f * r when the sleep routine executes,(00 01 based on this bit* f When we wake up we recover this bit and it becomes the previous done ; flag back in *Stat_0\ so that if the osc is } still dark or failed, Furby wont go back to sleep LDA Seed_2 ;from EEPROM BED No_prevsleep ;jump if none LDA 5tat_0 ; system OKA #Dark_S1eep_pre v iprev done STA Stated ;update Ncs_prevsleep4 LDA Spcl^seedl ;recover start up random number STA Seed_1 ; s © t generator ; Fot_timeL2 is save in ram through sleep mod© and then reloaded * 1 Fot^tiraeL which is the working register for the motor position. l This allows startup routines to clear ram without forgetting the ; last motor position. LDA ST/ Pot_timeL2 Pot_ imeL ;get current count ;save in motor routine counter Get age and make sure it is not greater than 3 (&ge4l LDA AND ;;; ; Age ;get current age *S3h ;preserve bit 7 which is 9th age counter bit and insure age not >3 STA Age ;set system LDA STA t*Bored„reld Bored^t ime 1 ^ ;reset timer LDA STA *03 Las t_IR ;$©t timer i timer stops IR from hearing own IR . JSR LDA STA Get_light TEW PI Light_re£f ;go get light level sample ;get new count ; update system LDA CMP EEC Wantucold #lih Nonzero i decide if warm or cold boot ;ck for warm boot ;jump if is LDA STA STA JSR jsr #00 Macro_Lo Kacro_Hi Get _jnacro Notrdy ;point to macro 0 (SENDS TO SLEEP POSITION) ;go start motor/speech ;Do / get statue for speech and motor .zero: LDA STA #11 Mon„len ;preset motor speed ;set motor on pulse timing LuiA STA #05 Hof f^len ;set motor to 3/4 speed for speed ;set motor off pulse timing test LDA STA #00 3tat_4 ,clear all system sensor requests ;update Currently uses 4 tables, one for each age. LDA S ta t„G ;system ORA #Ini t„mo tor j f1ag motor to do speed ORA #Init„Hspeea ;2nd part of test STA Stat_0 ;update j Do wake up routine s Ida HGloba l^tiae :reset timer to trigger sensor 1 ea rn 1 ng STA Sensor_timer * LDA #80h ;get random/sequentia1 split STA 1NJDAT ;save for random routine LDX #0Ch ;make ^ure only gives random LDA noh ;get number of random selections , JSR Ran_seq ;go get random selection LDA TEMPI decision STA IN_DAT ;save decision LDA #Wake_ID ;which ram location for learnea word count (Offset) JSR Start_learn ;gc record training info LDA IN_DAT ;get back word to speak JSR Decid_age ;do age calculation for table entry LDX TEMPO ;age offset LDA Wakeup_£l,X ;get new sound/word STA Macro„Lo ;save lo byte of Macro table entry INK LDA Wakeup_Sl, X ;get new sound/word STA Macro_Hi ;save hi byte of Macro table entry JHP Start_macro ;go start speech ■ f IDLE Routine * tttitttiittttttmutittttttttsttttitittttttiititiitiitttttttiitititi Idle: ; Idle routine is the time slice task master (TSTM) ugh* ; We must call each routine and interleave with a call to speech ; to insure we never miss a TI request for data. JSK Notrdy ;Do / get status fur speech and motor This bit is set when light sensor is darker than ’DarJ^sleep 1 LDA Stat_0 ;system AND #REQ_dark_sleep ;ck for BEQ No_dark„req jjump if not LDA 2tat_0 ;system AND #BFh ;kill req STA Stat_0 ;update LDA #A6h ;sleep macro STA Macro_Lo LDA iOGh ;sleep macro STA Macro_Hi JMP 3 t a r t _tnac r o ; go say it No_dark_req: ; When any sensor or timer calls the *start__macro* routine, the ; Macro^Lo fc Macr:_Hi are saved. Everyone jumps buck to Idle and when ; speech/motor routines are £ inished t this routine will look at the ; macros that were used and execute another function if a match is found. ; Checks for his name first, then any IR to send, and finally, the sleep ; commands. THe temp macro buffers are cleared before Spcl„Nmnel: LDX Spcl_Name2: LDA CMP EEQ CMP BNE INX LDA CMP #00 ;offset Ck^Naxtie_table , X ; ck lo byte #FPh ;ck for end of table tnote 255 cant execute) Spcl_IRl ;done if is Reqjnacro^Io ; ck against last speech request Not_Nam^2 ;jump if not ;to hi byte Ck_N«me_ table, X ;ck hi byte Req_macro_Jhi ;ck against last speech request BWE Nat_Name3 -jump if not JMP 5ey_Snarae ; speak it Not_>Jama2; mx J Not_Kazno3: IKX * JHF Spcl_Name2 jloop til done S«y_£name ; LDA Stat_0 AND KDFh ;kill req for startup new name STA Stat^Q ; update LDA Kama ;current setting for table offset CLC ROL A ;2 1 s comp TAX LDA Narae^table- X ;get lo byte STA Kacro^Lo ; save lo byte of Macro ta v l© entry im LDA Name__table, X ;get hi byte STA Macro_Hi save hi byte of Macro table entry JSK Get_macro ;go start motor/speech JSR Notrdy ;Do / get status for speech and motor Sp^l_IRl: LDX #00 ;offset Spcl_IR2; LDA IRKmit_table f X ;ck lo byte CMP #FFh ;ck for end of table (note 255 cant , execute } BEQ Spd__IR_dn ;done if is CMP Req_macro__le i ;ck against last speech request RNE Not__lRamit2 ; jump if not s. IKX ;to hi byte - LDA IRxmi ratable f # X ;ck hi byte CMP R© qjcaac r o_h i :ck against last speech request BNE Not_IRxmit3 ;jump if not my ;point to IR table LDA IRxmit_table,X ; STA TEMP 2 ;xmi t temp LDA #FDb ;TI command for IR xjait STA TEMPI ; JSR XmitJTI ;go send it LDA #Bor©d_rel d ;reset bored timer STA Bored^timer I LDA #03 ;set timer STA Last_IR ;timer stops IR from hearing its own IR vp ■ JMP Spcl„XF*.dn ; done - ola ,. Not_IR3onit2 S INX jlo byte Not IRxmit3; IKX jhi byte IKX ;xmit pointer JMP Spcl_XR2 ;loop til done Spcl_XR^dn; , gr. • * W ■im? ■■# 7 W X " ••: "• . : Aisi=?. r r^SlK?'' A-27 Spcl_sleepl : LEA Sleepy„table*X ;ck lo byte CMP #FFh ;ck for end of table (note 255 cant execute) BEQ CkjEoacro^dn ;done if is CMP Req^aacro^lo ;ck against last speech request BNE Not_sleepy2 ;jump if not TNX ; to hi byte LDA Sleepy_table,X ; ck hi byte CMP Req^macro^hi fck against last speech request BNE Not^sleepY-i ;jump if not LDA #00 ;clear macro pointers for wake up STA Reqja&ero^lo STA Reqjnacro„hi * ;mod F-rels2 ; ; Before going to sleep send sleep cmnd to all others. LDA #15 f STA TEMP2 ;Xnut temp ram LDA #FDh ;TI command for IR xroit STA TEMPI ; JSR Xmit_TI ;go send it ;need to wait >600 milisec before going to sleep because we arent using ;buey flags from T1 and need to make sure it is done transmitting the ;I*R. code, the sleep routine kills the TI and it would never send the CTTJld , LDA #25 ;how many 30 milisec cycles to call JSR Half^delay ;do 30milisoc delay cycles ;end mod JM p GoToS1eep ; n i ty - ni jh t Not_sleepy2; im i Not_sleepy3: INX f JMP Spellsleepl ;loop til done Ck_macrc_dn * LDA #00 ;clear macro pointers for wake up STA Reqt_macro_lo STA Req_macro_hi JMP Test_new_name ;on to task master ; ,*; lit} SLEEP TABLE & IR table .-MOVE TO INCLUDE FILE LATER Sieepy_tabl©; DW 91 ;hangout m 166 ;wak^ up DW 167 ;w&ke up DW 166 ;wake up DW 169 ;wake up A-28 m 258 jrBack sw DW 259 /Back bw DW 260 /Back sw DW 403 /IR DW 413 ?IH DW 429 ; IR DB FFh,FFh IFF FF is table teminator IRxmit^table: DW /trigger macro DB 00 ;which IR command to call ( 0 - Of DW 13 /trigger macro DB 00 /which IR command to call 0 - Of DW 17 ;trigger macro DB 00 ;which IR command to call 0 - Of DW 19 /trigger macro DB 00 ;which IR command to call 0 - Of DW 26 ;trigger macro DB 00 ;which IR command to call 0 - Of DW 29 ;trigger macro DB 00 ;which IR command to call 0 - Of DW 33 ;trigger macro DB 00 ;which IR command to call 0 * Of DW 34 ;trigger macro D£ 00 /which IR command to call 0 “ Of DW 44 ;trigger macro DB 00 /which IR command to call 0 - Of DW 45 /trigger macro DB 00 /which IR cOflEnand to call 0 - Of DW 48 ;trigger macro DB 00 /which IR command to call 0 - Of DW 50 /trigger macro DB OC /which IR command to call 0 - Of DW 55 ;trigger macro DB 00 /which IR command to call 0 - Of DW 60 ;trigger macro DB 00 /which IR command to call 0 - Of DW 149 /from rooster wake up DB 00 f DW 352 /trigger macro DB 01 /which IR command to call 0 - Of DW 363 /trigger macro DB 01 /which IR command to call 0 - Of m 393 /trigger macro DB 01 /which IR command to call 0 - Of DW 248 ;trigger macro DB 02 /which IR command to call 0 - Of DW 313 /trigger macro DB 02 /which IR command to call 0 “ Of DW 86 /trigger macro DB 03 /which IR command to call 0 - Of DW 93 ;trigger macro DB 03 /which IR command to call 0 - Of DW 339 /trigger macro DB 03 ; which IR command to call 0 - Of ) DW 344 ;trigger macro DB 03 ;which IR command to call 0 - Of } DW 351 ;trigger macro DB 03 ;which IR command to call 0 - Of 1 DW 404 ;trigger macro DB 04 :which IR command to call 0 - Of ) DW 405 ;trigger macro DB 04 ; which IR ctumnajid to call 0 - Of } DW 293 ;trigger macro DB 05 ;which IR command to call 0 - Of ) DW 394 ;trigger macro DB 05 ; which IR command to call 0 - Of 1 DW 405 ;trigger macro DB 05 ;which IR command to call 0 - Of 1 DW 414 ;trigger macro DB 05 ;which IR command to call 0 - Of ) m 422 t trigger macro zm 05 ;which IR command to call 0 - Of ) DW 395 ;trigger macro DB 0 6 ;which IR command to call 0 - Of ) DW 421 ;trigger macro DB 06 ;which IR command to call 0 - Of ) DW 4 23 ;trigger macro DB 06 ;which IR command to call o - Of ) DW 296 i trigger macro DB 07 iwhich IR command to call 0 - Of ) DW 41b ;trigger macro DB 07 ;which IK command to call 0 - Of ) DW 416 ;trigger macro DB 07 ;which IR command to call 0 * Of ) DW 2SS ;trigger macro DB 08 ;which IR command to call 0 - Of ) DW 11 ;trigger macro DB 09 ;which IR command to call 0 - Of } DW 12 ;trigger macro DB 09 ;which IR command to call 0 *■ Of ) DW 27 ;trigger macro DB 09 ;which IR command to call 0 - Of ) DW 42 :trigger macro DB 09 ;which IR command to call 0 * Of I DW 57 ;trigger macro DB 09 ; which IR command to call 0 - Of } DW 235 ^trigger macro DB 09 ;which IR command to call 0 * Of } DW 236 j trigger macro DB 09 ;which IR command to call 0 - Of J DW 237 ;trigger macro DB 09 ; which IR comma -d to call 0 - Of ) DW 23 8 ;trigger macro DB 09 ;which IR command to call 0 - Of ) DW 261 ;trigger macro DB 09 ;which IK command to call 0 - Of 1 DW 262 i trigger macro DB 09 ;which XH command to call ( 0 - Of ) DW 396 ;trigger macro DB 09 ; which XR command to call 0 - Of DW 409 ; trigger macro DB 09 t which IK command to call 0 “ Of DW 399 ;trigger macro DB 10 ;which IK command to call 0 - Of DW 407 ;trigger macro DB 10 ;which IR command to call 0 - Of m 408 ;trigger macro DB 10 ;which IR command to call 0 - Of DW 272 ;trigger macro DB 12 jwhich IK command to call 0 - Of DW 273 ;trigger macro DB 11 ;which IR command to call G - Of DW 274 ;trigger macro DB 11 jwhich IR command to call G - Of DW 275 ;trigger macro DB 11 ;which IR command to call 0 * Of DW 400 ;trigger macro DB 11 ; which IR command to call 0 - Of DW 418 ;trigger macrc DB 11 ;which IK command to call 0 - Of DW 425 ;trigg:r macro DB 11 ;which IR command to call 0 - Of DW 426 ;trigger macro DB 11 ;which IR command to call 0 - 0£ DW 336 ;trigger macro DB 12 ;which IR command to call 0 - Of DW 342 ;trigger macro DB 12 ; which IR consnand to call 0 “ Of DW 401 ,* trigger macro DB 12 ;which IR command to call 0 - Of DW 92 ;trigger macro DB 13 ;which IR command to call 0 - Of DW 411 ;trigger macro DB 13 ;which IK command to call 0 * Of DW 419 ;trigger macro DB 13 ;which IR command to coll 0 * Of DW 427 ;trigger macro DB 13 ;which IR command to call 0 C£ DW 291 ;trigger macro DB 14 ;which IR command to call 0 - Of m 402 ;trigger macro DB 14 ;which IR command to call 0 - Of DW 412 ;trigger macro DB 14 ;which IR command to call 0 - Of DW 428 ;trigger macro DB 14 ; which IR comttvand to call ; o “ Of DW 256 i trigger macro DB 15 ;which IR command to Call [ o - Of ) DW 257 r * trigger macro DB 15 ; which IR command to call i 0 * Of ) DW 420 ;trigger macro DB 15 ;which IR command to call { 0 - Of ) ;mod F-rels2 i sen d sleep if r&cv sleep on IR DW 403 ;trigger macro DB 15 ?which IR command to call ( 0 - Of } DW 413 ;trigger i^cro DB 15 ;which IR command to call ( 0 - Of ) ; end mod DB FFh,FFh ;FF FF is table terminator Ck Jtfame_t abl e: DW 97 DW 24S DW 393 DW 414 DW 149 DW 305 DW 404 DW 421 DB FFh,FFh ;FF FF is table terminator ; Say name Tes t_new_name; LDA Static ;system AND tSay_new_name ;make system say new name BEQ Nosayname ;bypass ii clear LDA Stat_G AND HDFh ; kill req for startup new name STA £tat_G I updat e LDA Name t current setting for table offset CLC ROL A i2’a comp TAX LDA Name_table,X ;get lo byte STA Macro_Lo j save lo byte of Macro table entry I NX ; LDA Name_table,X ;get hi byte STA Macro_Hi ;save hi byte of Macro table entry JSR Get_macro ?go start motor/speech JSR Notrdy ;Do / get status for speech and motor Nosayname: j ***** below routines run at 742 mSec loops « Timer B sets 'Milieec^flag * each 742 millseconds A-32 Updt_timer: LDA Mil : sec.flag ;if >0 then 1 BEQ TimerL.dn ^bypass if 0 LDA #00 ;clear it STA Milisec.flag ;reset LDA Sensor.timer ; get current beq TimerLl ;do nothing DEC Sensor.timer f-1 TimerLl: LDA Llght^timer ;get current timer BEQ Timer L 2 ;do nothing DEC Light^timer ;-1 TimerL2i LDA Sounds timer ;get current timer BEQ TimerL3 ;do nothing DEC Soundstimer ; -1 TimerL3; current timer LDA Bored.timer ;get BEQ Timer L4 ;do nothing DEC Bored_timer ; ~1 TimarL4r LDA Last.IR ;get current BEQ TimerLS ;do nothing DEC Last.IR ; -1 TircerLSi TimerL.dn: INC Task^ptr ; LDA Task.ptr ; get it CLC SBC #05 jck if off end BCC Ck.tsk.A ;jump if <9 LDA #01 ;reset pointer STA Task„ptr ; Ck.tskjt: ; l£ too sick then no game play,,, CLC t sick is he LDA Sick.counter ; how ^BC IReally.sick ; BCS Ck.t^sk.egg ;do egg if not JMP Ck.bored ;bypass if too srck ; Scan all gem.e mode pointers to determine if any are ct'tive, ; Continue to execute the first active game found, and tnat game always ■ allows the task list to be scaned for sensor input. If no games are ; active, then ch*ck task 0 to determine if the correct sensor sequence ; is occuring which will initiate th-^ next game» Ck_tosk_egg: LDA Game.l ROR A BCC Ck„g2 ?get game active bits ?move bit 0 to carry ;check next if not activ JMP Ck_g2: ROR 'BCC JMP Ck_g3: ROR BCC CMP Ck_g4i nn BCC JMP RQR BCC JMP Ck_g6; ROR BCC JMP Ck_g7: ROR BCC JMP Ck_g8; ROR BCC JMP Ck_g9: none active ; Task 0 : scans all active requests from sensors looking for a trigger* ; If any are set then scan through the game select tables for each game ; looking for a match, and increment the counter each time a succesive t match is found. If one is not in sequence, then that counter is reset to ; zero. Since all counters are independent, then the first one to completion ; wins and all others are zeroed, ; All sensor triggers are in one status byte so we can create a number ; based on who has been triggered (wb ignore the I,R. sensorK ; The following bits are in 5tat_4 and are set when they are triggered by the itid'vluual sensor routines t ; 00 c none f 01 b Loud sound ; 02 = Light change brighter ; 04 - Light change darker ; 08 = Front tummy switch ; 10 * Back switch i 20 ~ Feed switch l 40 - Tilt switch Game_f or tune jjussp if active A ;bit 1 Ck_g3 ;check next if not activ Game_Rap ;jump if active A jbit 2 Ck_g4 ;check next if not activ Oame_hideseek ;jump if active A ;bit 3 Ck_g5 ;check next if not activ Game^simon ;jump if active A Ck_g6 Game_Burp A rbit 5 Ck_g7 ;check next if not activ Gaiue._name ;jump if active A ;bit 6 Ck_g8 ;check next if not activ Game_twinkls ; jump if active A ;bit 7 Ck_g9 ;check next if not activ Game„_roos ter ;jump if.active check next if not activ jump if active A-34 t = Invert switch ; We assi i a single bit per game or egg senario. Each time a ; sensor - 2 triggered, we increment the counter and test all eggs for ; a match. If a particular sensor doesnt match, then set its disqualified ; bit and move on. If at any time all bits are set, then clear counter to ; zero and start over. When a table gets an FF then that egg is executed. ; Each time a sensor is triggered, the system timer is reset. This timer ; called 'Sensor_timer* is reset with , Global_tinue 1 equate. This timer is also ; used for the random sequential selection of sensor responses. If this ; timer goes to zero before an egg is complete, ie, Furby has not been played r with, then clear all disqualified bits and counters. ; Currently there are 24 possible eggs. (3 bytes) ;Qualify!; ; DQufortune EQU 01 ;bit 0 = fortune teller ; DQ^rap EQU 02 -bit 1 = rap song ; DQ_hide EQU 04 bio 2 = hide and seek ; DQ siraon EQU 08 bit 3 simon says ;DQ_burp EQU 10 bit 4 burp attack ; DQ_name EQU 20 Lit 5 - say name ; DQ twinkle EQU 4C bit 6 a sing song ;DQ_rooste’ EQU 80 bit 7 - rooster-love you ; Qualify2; iff* removed due 10 lack of RAM ; bit 0 = ; bit 1 B bit 2 B bit 3 S bit 4 = bit 5 B bit 6 B bit 1 " ; Test triggers here Ck^game: ; LBA £^nsor_timer ;ck if no action for a while LDA Bored_timer ;ck if no action for a while BNE Ck_gamactv ijump if system active JSR Clear_games ;go reset all other triggers and game pointers Ck_gamactv; LDA Qualifyl ;test if all are disqualified CMP IFFh ;compare activ bits only BNE Ck^anysens ;jump if some or all still active ; LDA Qualify2 ;test if all are disqualified ; CMP iO Oh ;compare activ bits only j BNE Ck_anysena ; jump if some or all still active JSR Clear^games jgo reset all ot* er triggers and game pointers Ck_anysens; LDA Stat_4 ;ck if any sensor is triggered BNE Ck^gaml ;go ck games if any sat JMP Ck^bored ;bypass if none Ck„gaml; ;fortune teller LDX Egg_cnt ;get current count LDA Qualifyl update game qualification AND *DG_fortune ;check if dis-qualifled bit BNE Ck_gam2 ;bail out if is LDA Fortune_table , X ;gjet current data AND St*t_4 ;compare against sensor trigger BNE Ck^gamla ;i£ set then good compare LDA Qualifyl ;update game qualification ORA #DQ_fortune ;set dis-qualified bit STA Qualify! ;update system JMP Ck_gam2 ;check nestt egg Ck^gamla: LDA F©rtune_table+1 * X ; get current +1 to see if end of egg CMP #FFh :test if end of table and start of game BNE Ck„gam2 ;junp if not at end JSR Clear_gaines ;go reset all other triggers and game pointers LDA Game_l ;get system ORA ttFortune_mode ; start game mode STA Game. 1 ;upda c e JMP Idle ; done Ck_gam2: ; Rap mode LDA Qualify! ;update game qualification AND #DQ_rap ;check if dis-qualified bit BNE Ck_gam3 ;bail out if is LDA Rap_table,X ?get current data AND 5tat_4 ;compare against sensor trigger BNE Ck_gam2a ;if set then good compare LDA Qualifyl ;update game qualification ORA #DQ_rap ; set dis-qualified bit STA Qualify! ;update system JMP Ck_gam3 ;check next egg Ck_gam2a : LDA Rap_table+1, X ;get current data +1 to see if end of egg CMP #FFh ;test if end of table and start of garni BNE Ck_gam3 ;jump if not at end JSR Cl©ar_games ;go reset all other triggers j and game pointers LDA Game_l ;get system ORA #Rap„mode ;start game mode STA Game w l ;upda t e JMP Idle ; done Ck_gam3 \ i Hide and seek LDA Qualif/l ;update game qualification AND #DQL_bide ;check if die-qualified bit BNE Ck_gam4 ;bail out if is LDA Hseek_table, X ;get current data AND Stat_4 ;compare against sensor trigger BNE Ck__gam3a ;if set then good compare LDA Qualifyl ;update game qualification ORA #DQ_hide ;set dis-qualifiud bit STA Qualifyl ;update system JMP Ck_gam4 ;check nect egg Ck_gamia: LDA Hseek_table+1 f X ;get current data *1 to see if end of egg CMP dFFh ;test if end of table and start of game BNE Ck_gam4 ;jurp if not at end JSR Clear„games 7 go reset all other triggers and game point LBA Game_ 1 ; get system ORA «Hideseek*mode ;start game made STA Game^l ;update JMF Idle ; done C. ; Simon says LDA Qualifyl ;update game qualification AND •DQ_simcn ;check if die-qualifled bit BNE Ck_g*m5 ;bail out if is LDA Simon_table, X ;get current data AND Stat_4 ;compare against sensor trigger BNE Ck„gam4a ;if set then good compare LDA Quailf yl ;update game qualification ORA •DQ_simon ;set dis-qualified bit STA Qualifyl ;update system JKP Ck_gam5 ;check next egg Ck_gom4e ■ * LDA Sim£>n_table+1, X ;get current data +1 to see if end of egg CMP •FFh ;test if end of table and start of game BNE Ck_gam5 .-jump if not at end JSR Clear_games ;gc reset all other triggers and gome pointers LDA Game__l ;get system ORA •Simons ay _mode ; start game mode STA Game_l ;update LDA • 00 ;clear all pointers STA Scat_5 ;system JMP Idle ; dene Ck_gam5: ; Burp altac k LDA Qualify! ;update game qualification AND •DQ_burp ;check if dis-qualified bit BNE Ck_gam6 1 bai1 out if is LDA Burp_tabl X ; get current data AND Stated jcompa re agains t s©ns or trigger BNE Ck„gam5a ;if set then good compare LDA Qualify! , ;update game qualification ORA #DQ_burp ; set dis-qualified bit STA Qualifyl ;update system JMP Ck_gam6 ;check next egg Ck_gam5a: LDA Burp_table+1,X ;get current data + 1 to see if « end of egg CMP • FFh ;teat if end of table and start of game BNE Ck_gam6 ;jump if not at end JSR Clear_goraes ;jo reset all other ^riggers - and gam© pointers LDA Game_l ;get system OKA #Burp_mode ;start gome mode STA Gome_l ;update LDA • 00 ;clear all pointers STA Stat_Ji ;system JMF Idle ; done Ck^jjamG j 1 say name LDA Qual1fyl ;update game qualification AND #DQ_name ;check if dis-qualifled bit BNE Ck_gam7 ;bail out if is LDA Name_egg # X jget current data AND Stat_4 ;compare against sensor trigger BNE Ck_gam6a ;if set then good compare LDA Qualifyl ;update game qualification ORA tDQ_name ?set dis-qualified bit STA Qualify! ;update system JMP Ck_gam7 ; check next egg Ck_gam6a: LDA Name_egg+l,X ;get current data +1 to see if end of egg CMP #FFh ; test if end of table and start of game BNE Ck„gam7 ;jump if not at end JSR Clear^games ;go reset all other triggers and gam© pointers LDA Game_l ;get system ORA #Name_mode ; start game mode STA G«me_l ;update LDA tOO ;clear all pointers STA Stat_5 ;system JMP Idle ;done Ck_gam7: ; twinkle song LDA Quailfyl ;update gam© qualification AND #DCL, twinkle ;check if disqualified bit BNE Ck_gam9 ?bail out if is LDA Twinkle^egg,X ;get current data AND Stat_4 ;coi^pare against sensor trigger BN] Ck_gam7a ;if set then good compare LDA Qualifyl ;update game qualification ORA tDQ_twi kl© ;set dis-qualified bit STA Qualifyl ;update system JMP Ck_gam8 jcheck next egg Ck_gam7a: LDA Twinkle^egg*1 t X ;get current data +1 to see if end of egg CMP llPFh ;test if end of table and start of game BNE Ck_gam& ; jump if not at end JSR Clear_gam©£ ;go reset all other triggers and game pointers LDA Game_l zget system ORA IITwinklearned© .start game mode SIA Game_l ;update LDA 100 ;clear all pointers STA States ;system JMP Idle ; don© Ck_gam8; ; roos h er lov^s you LDA Qualifyl ;update game qualification ANE #DQ rooster ;check if dis-quallfled bit BNE Ck_gam9 ;bail out if is LDA Rooster_egg,X ;get current uata AND Stat^4 ;compare against sensor trigger BNE Ck_gam&a ;if set then good compare LDA Qualifyl ;update game qualification ORA ttDQurooster ?set dis-qualifi©d bit STA Qualifyl ;update system JMP Ck„gam9 ;check next egg Ck_gaitiBa: LDA Rooster„egg+1,X ;get current data +1 to see if end of egg CMP #FFh ;test if end of table and start of game BNE Ck_gam9 ;jump if not at end JSR Clear_games ; go reset all other triggers and game pointers LDA Game_X ;g©t system ORA IIRooster^jniod© ; start game mode STA Gam©_1 ;update LDA #00 ;clear all pointers STA Stat_5 ;system JMP Idle ;done A-3S Ck_gam9 : Ck_g amend i INC £gg_cnt ;ince on any ser.sor trigger LDA Bgg_cnt -■get CLC SBC #10 ; 1imit max to 10 for error checking BCC Cge2 ; continue if less JSK Clear_games ;reset all Cge2 : LDA #00 ; clear all sensor triggers this pass STA Stat_4 ; ready for next pass of sensor JHP Ck_bored ; done with easter egg test i Cl e ar _a 11 __g am s ; clear all game enabled bits LDA #00 STA Game_l ; ; STA Game_2 5 Clear_games ;cle«. counter LDA #00 STA Egg_cnt STA Stat_4 jclear gome status STA Stat_5 j clear game status STA Qualifyl ;clear all di s-qualify bits ; STA Quali£y2 ;clear all iis-qualify bits RTS ; done * * * ; 00 » none ; 01 s Loud sound t_ iggers 02 - Light change brighter 04 = Light change darker GS » Front tummy switch 10 = Back switch 20 & Feed switch 40 * Tilt switch 80 = Invert switch These look up tables provide the sequence of sensor triggers required to enter that specific game raode. FFh is always the last byte) For tune_table: DB G4h,04h,lOh,FFh Rap_tablei DB Olh,Glh,Qlh,Qlh, FFh Hseek_ table: DB G4h,G4h,G4h,OBh,FFh Simon^table: DB 08b,IQh,Glh,04h, FFh ;Ight jIght r back snd, snd, snd , snd ;light,light,light,frnt ; fmt ( back, and, 1 ght Burp_table: DS 20h,20h,20h,10h,FFh Mame_egg: DB oeh,G 8 h, 08 h, 1Oh,FFh Twinkle_egg; DB Glh,Olh,01h f 10h,FFh Rooster^e- 7 * DB 04h,04h,Q4h,10h,FFh #feed,f ed,feed-back ; fmt, frut f fmt f back ;and* end,end,back ; 1ight,light p light,back ; Normal task scan of sense.® and timers, Ck_bored: LDA Bored_t^mtt ck if bored . * . =0 BNE Ck_tski ;jump if not bored ; Currently uses 4 tables, one for each age. ld; #Bored_spl j. t ;get random/sequential split STA IN_DAT ;save for random routine LDX «$eq_bored ;get number of sequential selections LDA #Ran_bored ;get number of randoms JSR Ran_i, eq ;go decide random/sequential BuS Bored_ran ; Random mode when carry SET LDX Bored_coun^ ,^ve current INC Bored_ c atm t ;i£ not then next table entry LDA Bered_count ;g*t CLC SBC #Seq„bo ad-1 ;ck if > assignment BCC Bor«dLside ; jump if < LDA #00 ;reset to 1st entry of sequential STA BorLd_cour*t Bored_£ de: fJU ;current count Bored_ran: JSR Decid^age ;do age calculation for table entry LDX TEMPO ;age offset LDA Bored_Sl .X ;get new aound/word STA Macro_Lo ;save lo byte of Macro table entry INX LDA Bored_Sl,X ;get mw sound/word STA Macro_Ki ; save hi byte of Macro Calls entry JMP Start_macrc ;go set group/table pointer for motor & speh Ck_tskl; LDA Task_ptr 1 CMP *01 ^decide which BNE Ck_tsk4 ;jump if not JMP CK^tilt ;Ck ball witch side sense Ck_tsk4: CMP #02 ;decide which BNE Ck„tsk5 ;jump it not A*40 JMP Ck^invert ;Ck ball switch inverted sense Ck_tsk5: CMP *03 ;decide which BNE Ck_tsk6 ;jump if not JMP Ck^back ;Ck Touch switch back sensor Ck_tsk 6 1 CMP 104 ;decide which BNE Ck_tsk7 ;jun^ if not JMP Ck_IR ?Ck IE input Ck_ tsk7; CMP *05 ;decide which BNE Ck_tsk8 ;junp if not JMP Ck^feed ;Ck Feed sensor Ck_t»k8: CMP *06 ;decide which BNE Ck_tsk9 ;jump if not JMP Ckw-ighc ;Ck Light sensor Ck_tsk9; CMP *07 ;decide which BNE Ck_tsklO ;jump if not JMP Ck^front ;Ck Front touch switch Ck tsklOi CMP *08 ;decide which BNE Ck_tskend ;jump if not JMP Ck_eound ;Ck Mic input Ck_tskend: JMP Idle ;no task i This rtn tests for motor and speech activity and only services them ; to allow each request to finish, and then returns to task routine, ; Am long as motor active, we continually reload the motor led timer ; to keep the optical counter alive and when all activity is complete, ; the IRQ will turn led off when timer goes to 00. M: JSR Task_l rgo do speech JSR Task__2 ; go do motor LDA Sta t_l ;get system AND *Wc ‘d_activ ;Test for spch word active BNE Notrdy2 ;jmnp if not done LDA Stat_l ;update AND BNE •Say^activ Notrdy2 ;ck for saysent active LDA Stat_2 ; get AND *Motor„seek ;ck motor request BNE Notrdy2 ;juinp If set LDA Stat_2 ;get system AND BNE IMotor^actv Notrdy2 V' Drift^fwd NotrdyS ; ck motor in motion LDA BNE ;motor drift counter 0 when LDA Drift_rev r SHE Notrdy2 4 LDA Stat_2 ; system AND #Kacro_actv ;ck for flag request BEQ Notrdy_dn ; bail if none JSR CkJMacro ;decide if more chaining in process JMP Notrdy2 ;continue Notrdy_dn; RTS i only leave when everyone done Notrdy2: LDA IMotor_1ed_rs t p *get led timer reload STA Mo t or_1ed_timer ;how long the motor stays on JMP Notrdy ; loop Task_l: LDA Stat_l ;get system AND t^ord_activ ;Test for spch word active BNE W_activ ,* jump if not done ;More_spch: LDA Stat_l 1 update AND #Say_activ ;ek for say~ant active BEQ EndTask„l i nothing going on, ck next task JSR Do_nexteent ;continue on with saysent JMP EndTask_l ;Next task W activ i LDA PortJB ;get TI req/kusy line AND #TI„RTS :get bit L. rE EndTask_l ;if no speech then ck motor JSR Do_spch ;go send next byte to TJ EndTask^l j RTS Ta s k_2; »*****••**»* ; get next motor data. CKjnotor: LDA Stat_2 ;get system AND #Motor^actv ; ck motor in motion BEQ Ckjfcot2 ; done JMP Do^motor ?not so check position Ck_mot2; LDA Stat_2 ;get system AND *Motor_seek ;ck motor request BEQ NMM_out ;juinp if rone Next^motor: i LDA Drift^fwd ;motor drift counter 0 when done m BNE NMM_out LDA Drift_rev BNE NKM_out ;wait til 0 ; wait til 0 ; Set a timer and ck counter ’motorstoped[incremented with wheel count} ; to see if it changed. When it stops changing then the motor has stopped. LDA BNE LDA CMP BEQ LDA STA LDA STA JKP Motor^done; LDA Cycle^timer ;get step timer BNE NMN .out ;wait ti) 0 STA Drift_councer ; use as a temp register JSR Motor^data ;get data LDA #00 STA TEMPI ? reset LDA Motorola ; get data (use for Ibyte tails (DB) 1 CMP #FFh i is it table end (dont inc off end) BNE Motor^pause jmore LDA Stat_2 ;get system AND #Motar„ntseek ;clear seek flag STA Stat_2 ;update system NMH_out: JKP Endtask„2 ;seek complete rootorstaped ;ck for 0 NMWLout ; wait till 0 TEMPI ;get last motor count Pot_timeL ;ck if changed Motoredone ijump if same (motor finally stopped) Pot^timeL ;get current TEMPI *15 ;reset timer 18} raotorstoped ; MMM out ;wait another cycle Mot or_paus e: LDA Motorola ;check for pause request on this step *00) BNE More^jaotor ore JKP MotorJcillend ;eet cycle timer and ait for next motor step ; ; To initialise the motor call table f the originator loads *Which_motor 1 * with the pointer and calls ’Decidejootor 1 ' * Ckjtacro: JSR N©xt_macro ;get data STA Whichjmotor ;save motor seek pointer JSR Next„macro ;get data STA Mgroup ;save high byte CMP 400h i check for end of macro BNE Got^macro ;do it if not 0 LDA Whidkjnotor ?ck lo byte for 0 CMP #00h t check for end of macro A~43 BNE Gotjcnacro rdo it if not 0 else must be end coirsoand End_juacro: LDA Stat_2 ;get system AND #Nt_macro_actv ;clear request STA Stat_2 ;update ; LDA #Bored_reld ;reset bored timer ; STA Bored_timer ; No_jaacro: RTS ;done Next„macro j LDX MOOH LDA (Macro_Lo,X> ;get speech/motor table request INC Macro^Lo jnext BNE Hac_dat2 ;jmp in no roll over INC K&cro_Hi i rolled over so hi +1 Kac_dat2: RTS i Gotjnacro; j The speech and motor pointer table pointer from the sensor table r are ; a 1-999 decimal number. The assemble converts to two 8 bit numbers and i this creates a one of four group of 128 byte pointers in each group. i We also do 2's offset for table lookup. CLC ;do motor ROL Whichjmotor ;move hi bit to carry ROL Mgroup ;move carry into one of four groi o ptr LDA Which_motor ;offset STA Which_Word jset speecn group pointers LDA Mgroup ;offset STA Sgroup ; JSR Decide_motor ;start motor routine JSR Say^O ;start speech routine RTS ;back to task master More^motor j LDA Stat_3 ;system ORA #Motor_on ; flag on mode STA Star J3 ;update m LDA Mon^len ; get length of on pulse ; m STA Mator„pulse ;set timer LDA Stat_2 ;get system ORA #Mctor„actv ;set motor in motion STA Stat_2 ■ update Mcalc. _lot ; When motor stops, if the 1R detector is on the slot in the wheel, no ? action is reeded. If passed the slot, when the next motion command occur®, ; if the direction is the same as the last motion, no action is needed i If the direction is oppoait to last motion then we decrement or ; increment, based on new direction, to compensate for the slot which ; will be counted twice. LDA Motorola ; get data CMP Fot^timeL ;ck for same flNE Tst^fwdmore ;jump if not 0 LDA Stat^2 ;get system AND fMotor^inactv ;clear activ flag STA Stat_2 ;update system JMP Endtask_2 ;bail out Tst_fwdmore: CLC SBC Pot^timeL ;get current position BCC Go_rev ;if borrow then dec command Go_fwd: LDA Port_C AND iPos^sen BEG Go„fwd2 LDA Stat_2 AND iMotor^fwd BNE Gc_fwd2 DEC Pot__timeL2 Go_fwd2: LDA Stat_2 ;get system ORA (Motor. _£wd ;set = motor fwd {inc} ORA !IMotor_ jactv ;set motor in motion STA Stat_2 ;update system LDA Stat_3 ;get cur rent status ORA HMotor. _of f ;turn both motors off AND ♦(Motor. _fwds ;move motor in fwd dir JMP End_rev ;go finish port setup f Go_rev: LDA Port_C AND ttPos_sen BEQ Go_rev2 LDA Stat_2 AND #Motor_£wd BEQ Go_rev2 INC Pot_timeL2 ; get IR detector ;bypass if sensor is over slot in wheel ;get system ;g©t direction motor was last headed ;if clr then new direction is same as last ;compensate for counter direction reversal jget IR detector ;bypass if sensor is over slot in wheel ;gen system ;get direction motor was last headed ;if set then new direction is same as last ;compensate for counter direction reversal Go_rev2: LDA Stat_2 ;get system AND ItMotor ^rev ; clear fwd flag ORA #Motor_actv ;set motor in motion STA Stat_2 ;Update system LDA Stat_3 ;get current status ORA UMotor^off ; turn both motors off AND iMotor^revs ?mcve motor in rev dir End_rev; STA Stat_3 JMP Endtask^.2 jdone A-45 f jmp Byp_jnotorS3 LDA Stat_Q ;system AND 1Init_Mspeed ;ck if motor to do speed test BEQ Byp_jnotorS3 ;only runs on wake up LDA Stat_0 ;system AND #Init^motor ,-ck if : motor to do speed test BEQ Byp_motorS2 ; only runs on wake up LDA Stat_D ? system AND #Nt_Ini t_mo t or ; done STA stat_0 ;update LDA 400 ;reset ; opto speed counter STA Mot_opto_cnt ;eetit LDA # Op t o_^spd_r eld ;get timer value for speed tei STA Ho t_speed_cnt ?set it Byp j jmotorS2 ; LDA Mot_speed_cnt ;get timer BNE Syp_motorS3 ,'do nothing if >0 LDX Mot_opto_cnt ;get wheel count during speed LDA Motor_speed,X ;get motor on pulse width STA Mon_ltm fon time LDA iMpulse_on+l ;max cycle time on+off CLC SBC Mon_len ;get cmplmnt STA Moff^len ; BCS Byp_motorS3 ;jump if not neg LDA 400 STA Moff_len j LDA Stat_0 ;system AND f NT_Init_Mspeed ;clear motor to do speed test STA Stat^O ;update Byp_xootorS3 : i)))n)}))))))))>)})n)))))) i) inmmimmmimmmi On power up we preset Mon^len to 11 and Ho£f_len to 5. This prevents the motor from destroying itself when the batteries are 6,4v. This also gives a timed count on the speed test of -7 difference, so I adjusted the table to compensate for the shift. ; Compare motor position to see if at destination yet LDA Stat_2 ;get direction AND #Motor_fwd ;set=inc clr^dec BEQ Motor M dec ; ;bit was set so motor in inc condition FCalc_loi LDA Hotor_lo ,get data CLC ;carry=0 SBC Pot_timeL i table - current cap time BCC Motor_ki11fwd ;junp if resul: is negative JMP Endmotor ;wait till there k pulse for speed ; Reverse direction. Motor^dec: ; go reverse LDA Pot^timeL ;destination CLC ; carry=0 SBC Motor„lo ;table position to seek to BCC Motor_killrev ;jump if result negative JMP Endmotor ; wait till there k pulse for speed Hotor_killfwd: LDA Dri£fc_counter ; ck how far we travled TAX ;prep for drift table CLC * SBC *20 ;ck if less than 20 steps BCC M^killf2 ;jump if less LDA *Drift_long ;long delay if >10 steps JMP M_killf3 ;go fini M_killf2: LDA Drift_table, X ;get brake pulse f LDA tDrift_short ;short delay if < 10 steps M_killf3i STA Drift_rev ; save JMP Motor^killend ;go shut down motor i Motor_killrev: LDA Drif t__counter ; ck how far we travled TAX ;prep fur drift table CLC * SBC #20 ;ck if less than 20 steps BCC H_killr2 ;jump if less LDA #Drift long ;long delay if >10 steps JMP M_killr3 ;go fini M_killr2: LDA Drift^table,X ; get brake pulse ; LDA #Dri£t_short ;short delay if < 10 step s H_kUlr3: STA Drift_fwd ; save Motor^killend: LDA Stat_3 ;get current status ORA #Motor_off ;turn both motors off STA Stat_3 ;update LDA Stat_2 ;get system AND #Motor_inactv ;clear activ flag STA Stat_2 ;update system LDA Which_delay ;time til next read STA Cycle_timer ; reset it LDA *00 STA TEMPI ;used to test motor drift between JMP Endtask_2 ; Drift table controls the magnitude of braking pulse applied, ; If the distance just travled is less than 20 then use that number ; to point into table and get new brake pulse length. Dr If t_tables h V's|ilp-ir^ '?£ ' r '"‘ + ' &A : fjj* .j|fes£ . , DB 24,30,32,34,35,36,40,44,48,54,56 H?t; S :p4- -rl Ssssbr „ DB 58, r 60 , 60, ,60, 60, 60, 60, 60, ,60, ,60, 60 DB 20, r 22, 24, ,27, 30, 32, 34, 36, 38 DB 46. r 48 J 50, ,52, 54, 56, 50, 60, - 60 j 60, r 6 0,60 DB 25, -26, 27, r 28 , 30, 32, 34, 36 j , 33, r 42 , r 3 {0-3 age) BCC Same aqe ;jump if <4 LDA #03 ;max age STA Age * Same_age: t -r “ “ “ “ ' age LDA 5tat_2 ;system ORA WMacro_actv ; flag request STA Stat_2 ;update CLC ;do speech ROL Macro_Lo ;move hi bit to carry & get 2's offset ROL Hacro_Hi ;move c*rry into one of four group ptr LDX Macro^Lo ;of fset ptr LDA Macro Hi ; get current group pointer CMP #03 ; is it table group 4 BEQ Dec„jaacro4 ; jump if is CMP *02 ;is it table group 3 BEQ Deo_jnacro3 ijump ii is CMP #01 ;is it table group 2 BEQ Dec_jnacro2 ; jump if is Dec_roacrol: ;table group 1 LDA Macro„grpl, X ;get lo pointer STA Macro^Lo ;working buffer INX ;X+1 LDA Macro_grpl,X ;get hi pointer JMP Dec_jBacro2; LDA STA INX LDA JMP Dec„jaacro3: LDA STA TNX De c„imc r o_end ;go finish load Macro^grp2,X ;get lo pointer Macro_Lo ;working buffer ;X+1 Macro_grp2,X ;get hi pointer Dec_macro_€nd ;go finish load f Kacro_grp3,X ;get lo pointer Macro_Lo ;working buffer ;X+1 LDA Macro_grp3,X ;get hi pointer JMF Dec_nuacro_end ; go finish load Dec_ma™ro4 s LDA Macro_grp4,X ?get lo pointer STA Macro_Lo ; working buffer INX ;X+1 LDA Macro_grp4,X ;get hi pointer Dec _macro_end: STA Macro„Hi ;working buffer RTS ; > This group of speech t misc routines are used for the various game ; play modes, triggered by the easter egg. ; REMEMBER TO CLEAR GAME ACTIVE STATUS WHEN DONE ; NOTE; Qtomah should have a delay before the word to separate this game ; from the speech generated by the last sensor that triggered f - this game, Qtomah^lo EQU #54h ;using macro B4 for 1st word Qtomah^hi EQU flOO ?hi byte adrs 84 * 054h Fortdelay_lo EQU #66h ;using macro 102 for delay between speech Fortdelay_hi EQU iOGh ;hi byte adrs 102 * Q66h Game_fortune: LDA Stat_5 ; f lag used at start of game* AND ltemp_gaml ; see if prev done BNE Qaj^_£ort2 ; jump if done LDA Stat_5 ;flag used at start of game ORA #temp_gaml ;set prev done STA Stet_5 ;update LDA #Qtamah_lo ; get macro lo byte STA Macro„Lo ;save lo byt© of Macro tabj.e entry LDA HQtomah^hi ;get macro hi byte STA Macro_Hi ;save hi byte of Macro table entry JSR Get_macro ;go start motor/speech JSR Notrdy ;Do / get status for speech and motor LDA #QameT_reload ;reset gam© timer STA Sonsor_timer ; Gan^fortS: JSR Teat_alIbsens ;go check all sensors A-52 LDA stat_a ;get sensor status AND *Do_back ;ck if back sw req BNE Gan^fort4 jump if requested LDA Stat_4 ;get sensor status AND *Do_invt. -i ?ck if tilt sw req BEQ Gam_£ort3 if not requested Gam_fort2a; JSR Clear„all_gam ;go clear all status, cancl© i JMF End_all_games ;done go say "me done' Gauuf ort3 : LDA Sensor_timer ;ck for no action timeout BEQ Ganuf ort2a ;clear all if timed out JMP Idle ;wait for switch Gan\_f ort4: LDA Stat_4 ;get sensor status AND iNt_do__back ;hack sw req STA Stat_4 ;clear req LDA *GameT_reload ;reset game timer STA Seneor_t inter ; LDA flFortdelay„Io ;get macro lo byte STA Maero„Lo ;save lo byte of Macro table entry LDA *Fortde3ay_hi ;get macro hi ^yte STA Kacro_Hi ;save hi byte of Macro table entry JSR Getjmacro ;go start motor/speech JSR Notrdy ?Do / get status for speech - LDA Stat„l ;get system ORA *Ral£_age ; force table 1 or 2 in fcf Decid m age 1 ' STA £tat_l ; update LDA #80h ;get random/sequential split STA XNLLAT ;save for random routine LDX *0u ;make sure only gives random LDA it Oh ,*get number of random selections JSR n_seq ;go decide random/sequential Acc holds random number 0-F JSR Becid_age ;do age calculation for table entry LDX TEMPO ;age offset LDA Fortyes_Sl,X ; get lo byte STA Macro_Lo ;save lo byte of Macro table entry STA Req_macro_lo i save for game INX 1 LDA Fortyes_Sl,X ;get hi byte STA Macro_jfi ;save hi byte of Macro table entry STA Req_mac r o_hi ;save for game LDX *00 ;Offset Fort_Nam©2 ; LDA Ck_Fort_nato&,X ; ck lo byte CMP *FFh ;ck for end of table (note 255 cant execute! BEQ Fort_JJame„dn ;done if ia CMP Macro_Lo ;ck against last speech request Not~Fort2 jjuiop if not i to hi byte Ck^Fort^jiamepX ; ck hi byte Macro_Hi ;ck against last speech request Not_Fort3 ;jump if not Say_Fortname ; speak it Fort_Name2 ;loop til done Say_Fortnaate; Wh Name ;current setting for table offs* CLC ROL A ; 2 * s ccccp TAX LDA Name_table,X ;get Xe byte STA Macro_Lo ; save Ic byte of «arr~ table entry INX ; LDA Name_table, X ; ge#- byte STA Macro_Hi ;save Isa of Mwci l. table entry JSR Get^macrc ; go star' or speech JSR Notrdy ;Dc gm+ status for speech and motor LDA Req__macro_lo ; recover for gar^e STA Kacro_Lo ; set game speech LDA Req_inacro_hi ; recover for gam© STA Macro_Hi ; set game speech For t_Naiae_dn t JMP Start_jnacro ,-go set group/table pointer for motor & spch ; compare macro to see if we are going to call Furby's name first. Ck_Fort_name: DW 69 DW 77 DB FFh.FFh jFF FF is table terminator BKE IKK LEA CMP HNE JMP Not„Fort2; INX Not_Fort3: INX JMP Game_Rap: JMP Do_rap jlet time thru Grap_2: J5R Simon_timer ; decrement bored timer LDA Bored_timer ; system elapsed time BEQ Rap_OVer ; jump if 0 JSR Tea t^al l_sens ;go check all sensors LDA Stat_4 ;get sensors BEQ Grap_J2 ;loop if none AND #JDo_snd ;ck for mic BNE Do_rap ;any other sensor stops game Rap_over: JSR Cl©ar_all_gam ;go clear all status, cancle JMP End_a1l_game s ;done go say “me done' A-54 Bo_rapi lda •00 ;clear all sensor tlags STA Stat_4 J LDA iGameT^reload ;get reload STA Bored^timer ;reset LDA #80h ;get random/ s ©quantia1 split STA INJDAT ?sav© for random routine LDX *Q0h ;make sure only gives random LDA tlQh ;get number of random selections JSR Ran^seq ;go get random selection LDA TEMPI ; get decision AND f03h ;got 1 of 4 decision CLC RDL A i2's offsett TAX um Rapsong,X ;get macro lo byte STA Macro_Lo ;save lo byte of Macro table entry INX LDA Rapseng,X jget macro hi byte STA Macro^Hi ;save hi byte of Macro table entry JSR Qet_macro ;go start mo tor/speech JSR Notrdy ; Do / get status for speech ; loop JMP Grap_2 Rapsong: ;macro RAP song pointer DW 395 DW 396 • DW 407 1 DW 416 r HidePeek^Io EQU #Dah ;using macro 475 for etartp ’hide me" spch HidePaek_hi EQU #01h ;hi byte adrs 475 * IDBh Hideklost_lo Hidsklost_hi EQU #D8h ;using macro 472 for "nana nana nana EQU #Ulh ;hi byte adrs 472 * lD8h Hid»kwon_lo EQU *B7h ;using macro 439 for 'whops© Hidskwon„_hi EQU iOlh ;hi byte adrs 439 * lB7h Oamejiideseek; LDA #S0 ; set timer for 1 min i80 * *742) STA HCEL^LQ ;us© temp ram for timer LDA CLC Name ;current setting for table offset RQL TAX A ; 2 1 s eonjp LDA Name_table,X ;get lo byte STA Macro^Lo ; save lo byte of Macro table entry INX 1 LDA Name_ table, X ;get hi byte STA Macro_Ki ;save hi byte of Macro table entry JSR Get^jnacro ;go start motor/speech JSR Notrdy ;Do / get status for speech and motor mm A-55 a W- M LDA IHideFeeJO-o ;get macro lo fey to STA Macro_Lo ; save lo byte of Macro table entry LDA IHideFeek^hi ;get macro hi byte STA Macro^Hi ;save hi byte of Macro table entry JSR Get^jaaero ;go start motor/speech JSH Wotrdy ;Do / get status for speech and motor GaEt_hide2: JSH HideS_timei ;go dec bored timer without Idle JSK Teat_al l_£e.ia ;go check all sensors LDA 5t«t_4 ;get *11 switches AND #Do_invert jck if inverted BEG Garuhide2a ;jump i£ not inverted ; JMP Gandhi de 9 ; abort game and call game lost speech 3SR Clear_all_gum ;go clear all status, cancle games JMF End_all_games ;dorje go say "me done" Gauuhide2a: LDA HCEL_LO ;ck for no action timeout BNE G«Oude2 ;vait till done to start game LDA #00 ;clear all sensor flags STA Stat_4 ; LDA 1242 ;set timer for 3 min (242 * .742) STA HCEL.LO preset GanL_bid*4: LDA #80h ;get random/sequential split STA INLJTAT ; save for random routine LDX #00 ,-make sure only gives random LDA #10h ;get number of random selections (0-0f) JSR RanLseq ;go decide random AND #0jfe , and nnot >16 TAX LDA Hide_time,X ;get random timer for speech STA Sensor^timer ; GanufeideS: JSR Test^all„sens ?go check all sensors LDA Stat^4 jget sensor status AND #Do_tilt ; ck if tilt sw req ENE Gam_hide8 ;jump if requested JSR HideS_ timer ;go dec bored timer & sensor_timer LDA HCEL_LO ;get elapsed BEG Gam_bide9 ;game over LDA Sensor^timer :get random speech timer ENE Gamjhdde5 ;loop till done ; GO SAY RANDOM WORDS TO HELP FIND HIM LDA #80h ;get random/sequential split STA XN^DAT ;save for random routine LDX #00h ;make sure only gives random LDA #10h ; get number of random selections JSR Rai,_seq ;go get random selection LDA TEMPI ;get decision A-56 CLC RQL TAX LDA STA INX oDA STA JSR JSR JMP GamJiideS: JSR LDA STA LDA STA JMF Q«n\_hid©9 i JSR LDA STA Gam_hid©9a; LDA idsklo»t,„lo ;get macro lo byte STA Macro_Lo ,-save lo byte of Macro table entry LDA #Hidsklost_hi ;get macro hi byte STA Macro_Hi ;save hi byte of Macro table entry JSR Cet^jnacro ;go start mot or /speech *« JSR Notrdy ;Do / get status far speech and motor DEC HCEL_H1 ; loop BNE Qanuhide&a j JMP Idle ;done HideStimer: LDA Milisec^flag ,-if >0 then 742 mili seconds have passed BEQ HideS^tdn ;bypass if 0 LDA 100 ;clear it STA Milisec^flag ;reset LDA HCELu-LG ;get current timer * 742mSec sec BEQ HideS„t2 ;do nothing if 0 DEC HideS„t2j HCEL^LO ;-l LDA Sensor_timer ;get current tinier * 742mSec sec BEQ HideS_tdn ;do nothing if 0 DEC Sensor^timer ;-l HideS_tdn: RTS ; for random time between calls whe.i hiding 6 j 5 sec tic * . 742 i 7 6 9 10 A-S7 Hide^time t DB DB DB DB DB A ;2*s offsett Hides eek,X ?get macro lo byte Hacro^Lo ;save lo byte of Macro table entry Hideseek^X ;get macro hi byte Macro^Hi ;save hi byte of Macro table entry ,-go start motor/speech ; Do / get status for speech and motor Get_puacro Notrdy GanL_hide4 ,-go clear all status, cancel game ; GAME WON SPEECH C1ear_a1l_gam fHidskwon_lo ;get macro lo byte Macro JLo ;save lo byte of Macro table entry SHidskwon^hi ;get macro hi byte M*vcro JH± ?save hi byte of Macro table entry Start^macro ;go set group/table pointer for motor & spch ? GAME LOST SPEECH Clear_all_gam ;go clear all status, cancel game §03 ; number of times to call *lwma R HCEL_HI DB 11 DB 12 DB 13 DB 14 DB 15 DB 16 DB 17 DB 13 DB 19 DB 20 ;15 sec DB 10 Hideseek: DW DW DW DW DW DW DW DW DW DW DW DW DW DW DW DW ;table of sound when Fur by is hiding & waiting to be found 437 ; 438 95 96 97 451 452 437 437 438 95 96 97 451 452 438 i Furby - Says ;i ; 1 Four byte of ram allocated for game and 5th byte is game counter. ; On start, get 4 random numbers and set the game counter to 4 sequences, ; Furby plays the 4 sounds and waits for the sensors to respond. If its ; wrong, then start over at beginning and if it is right then say whoppee ) and increment to 5 sounds.,,,,, until all 16. If 16 correct then get ; 4 new random numbers and continue with 16 sequences. ; The invert switch bails out of the game. S imondelay_lo EQU *66h ;using macro 102 for delay between speech Simondelay^hi EQU #00h ;hi byte adrs 102 « 066h Listenume^lo EQU DAh ;on start up he say "Listen Me" Listen^jae^hi EQU Olh ?macro 474 - IBAh Simon_fmt_lo EQU *AEh ;using nwioro 430 for eimon chooses "tickle* S i mon_ f m t _hi EQU ttQlh ;hi byte adra 430 = lAEh Simon_back_1o EQU #AFh ;using m-cro 431 for simon chooses ■pet S imon_back_hi EQU 4 Olh ;hi byte adrs 431 = lAFh A-5S 5imon_smd_lo Simon_and_hi EQU EQU ttBOh ;using macro 432 for aimon chooses "sound #01h ;hi byte adrs 432 * IBGh Simon^lghO-o 3 imon_l ght_hi EQU EQU #Blh t using macro 433 for simon chooses 11 light #01h ;hi byte adrs 433 - iBlh Skayfmt_lo EQU Skeyfmt_hi EQU #CFh #00h ;using macro 15 for user feed back ;use for "front“ skeybck_lo EQU Skeybckjii EQU #B2h ttOlh ;using macro 434 for user feed back ;use for "back" Skeylght^lo EQU Skeylght_hi EQU #B3h #01h ;using macro 435 for user feed back ;uee for "light" Skeysnd^lo EQU SkeysndLhi EQU #B4h #01h fusing macro 436 for user feed back ;use for "sound" Simon! os t_io Simon! os t_hi EQU EQU ttDSh ; lost game is macro 472 #01 ; Available ram not in use during this game ;HCEL_LO Counter of which sensor were on ;HCEL_HI Random play ram 1 : BIT_CT -■ Random play reun 2 ;Taek_ptr Random play ram 3 ; Bor account Random play ram 4 ;TEMP 5 Random save ram 1 ( was TMA^INT i TEMPS used in * RAN_SEQ' ? Temp_ID2 Random save ram 2 ; T«mp_XD Random save ram 3 fLeam^temp Random save ram 4 Game„, simon: ; do delay before start of game LDA (JSimondelay^lo ;get macro lo byte STA Macro^Lo ;save lo byte of Macro table entry LDA tSimondelay^hi ;get macro lo byte STA Macro^Hi ;save hi byte of Macro table entry JSR Get^jaoero ; go start mot or/speech JSR Nofcrdy ; Do / get status for speech and motor LDA Name jcurrent setting for table offset CLC ROL A ;2's comp TAX LDA Name_ table, X #get lo byte STA Kacro_Lo ;save lo byte of Macro table entry IKK ; LDA Name_table, X 2 get hi byte STA Kacro_Hi i save hi byte of Macro table entry JSR Get^macro jgo start motor/speech JSR Notrdy ;Do / get status for speech and motor : "iV vlSK- A-59 LDA #LiotenjEtw_lo ;g*t macro lo byte STA Macro_Lo ;save lo byte of Macro table entry LDA #Listenjm*Jhi ;get macro lo byte STA Macro^Hi ; save hi byte of Macro table entry JSR Getjnacro 7 go start motor/speech JSR Notrdy ;Do / get status for speech and motor LDA #£imondelay_lo jget macro lo byte STA Kacro_Lo ;save lo byte of Macro table entry LDA # S intends 1 ay Jbl ;get macro lo byte STA Kacro_Hi ;save hi byte of Macro table entry JSH Get^jnacro ;go start motor/speech JSH Notrdy 7 Do / get status for speech and motor LDA #04 ;number of sensors in 1st game GS_rentr: STA HCEL^LG ,-load counter STA IN_DAT ;save for later use JSR Simon_random 7 go load 2 grps of 4 ram locations Simon1; LDA HCEL_HI ;get 1st ram location JSR Simon^eensor ;go to speech JSR Kotate_jplay ; get next 2 bits for sensor choice DEC IN_DAT ;-l (number of sensors played this game] BNE Simon 1 ;loop til all speech done JSR LDA STA LDA STA LDA STA Simon2 ; JSR LDA HNE JSR LDA bne JMP Recovereplay # GameT_re1oad Bored_timer ; set #00 Stat_4 BCEL^LO IN_DAT ; reset random rams ;reset timer jelear all sensors ;get counter 7 reset it Test^alIbsens ?go check all sensors Stat_4 ;get em Simcn3 ;jump if any triggered Simon_timer ,*go check for timeout Bored_timer ; Simon 2 ;loop if not Simon_over ;bailout if 0 Simon3; do to lack of time I resort to brute force , YUK**** LDA Stat_4 CMP #08h BNE Simonla LDA #Skeyfrnt_lo STA Macro„Lo LDA #Skey£rnt_hi JMP Simonldn Simon!a; CMP «10h BNE Simon 3 b LDA #Sk*ybck_lo STA Macro_Lo lda #Skeybck_hi JMP SimDn3dn Simon3b: CMP #04h ;get which sensor ;front sw ;jump if not ;get macro lo byte ; save lo byte of Macro table entry ;get macro hi byte ; go apeak it ;back sw ;jump if not ;get macro lo byte ;sava lo byte of Macro table entry 'get macro hi byte ;go speak it ;light A-60 h m Simon3c ;jump if not urn t£keylght_lo ;get macro lo byte STA Wacrc_L© ;save lo byte of Macro table entry LDA #Skeylght_hi ;get macro hi byte JMP Six&onJdn ;go speak it Simon3c: CMP # Olh ; sound BKE Simon3d ;jump if not LDA iskeysnd^lo ;get macro 1c byte STA MacroJLo lo byte of Macro table entry LDA #Skeysnd_hi ;get macro hi byte JMP siiuoixBdn ;go speak it Siraon3d: CMP #Do_invert BEQ Slmonl© ;jump if is invert LDA #00 7 STA St*t_4 jclear sensor flags JMP Simon2 ;ignore all other sensors loop up Simon3e: JMP Simon_over ;bail out if is Simon3dn; STA Macro^Hi jsave for macro call JSR Get^macro ;go start motor/speech JSR Notrdy ;Do / get status for speech and motor AND LDA HCEL_HI ;get 1st ram location #03 ;bit Ok 1 TAX LDA ;point co interpret table entry Simon__convert,X ;translat game to sensors CMP Stat_4 ; ck for correct sensor BNE Simon^lost ' f done i f wrong LDA #00 V STA Stat_4 ;clear all sensors JSR Rotate_jplay ;get next 2 bits for sensor choice DEC IN_DAT ;-l (number of sensors played this game) BNE Simon2 ;loop til all sensors done JSR S imon__won ;game won JSR Re c ove r_pl ay ; reset random rams INC HCEL^LO ; increase number of sensor a in next game CLC LDA HCEL^LO ;get current STA DfJDAT ;reset game sensor counter SBC #16 ick if max number of sensors BCS Simon4 f JMP SimonI ;loop up Simon4: LDA #16 ;set to max JMP GS^rentr i start next round Simon subroutines Simcn_lost: ; LDA Stat_4 ;ck for invert aw to end game ; CMP ; BEQ #Do_invert ; 7 S imon_o ver ; ba i 1 out if is LDA #Simonloat_lo jget macro lo byte K . Ml STA LEA STA JSR- JSR JMP Simon_won: LDA CLC ROL TAX LDA STA INX LDA STA JSR JSR ETS Macro_La ;save lo byt* of Macro table entry # Simonl os t^hi ; get macro hi byte Hacro_Ei ;aav@ hi byte of Macro table entry Getjmacro ;go start motor/apeech Notrdy ;Uo / get etatus for speech and motor Gamers imcn ; start at beginning HCEL_LO ;gam© number (how many steps) A off sett for speech win table ; 5imon_won^hl X ;get lo byte Macro_Lo ;save lo byte of Macro table entry ( S imon_won_tb1 r X ;get hi byte Macro_Hi ;save hi byte of Macro table entry Getjiacro ;go start mo tor/speech Notrdy ;Do / get status for speech and motor Rotate_play: EOR Bored_count ;shfl to carry EOR Task_ptr ; carry k shfl to carry ROE BIT_CT ;carry k shfl to carry EOR HCEL_HI ;carry k shfl to carry throw away lo bit EOR BarecLcount ;shfl to carry ROR Task_ptr ;carry & shfl to carry ROR B1T_CT ;carry k shfl to carry ROR HCEL_HI ;carry L shfl to carry throw away lo bit RTS ? Kecover_play: LDA TEMPS ;recover random data STA HCEL_HI LDA Temp_ID2 STA BIT_CT LDA Temp_ID STA Task_ptr LDA Learn_temp STA Bored_count ETS ; Simon^over: JSR Clear_all„gam ;go clear all status, cancel game LDA #00 ? STA Task_ptr ;reset for normal use JMP End_all_games ;done go say "me done" 5imon_sensor: AND #03h ;get senosr CLC ROL A ;2b offset TAX ;offset LDA Psimon_table,X ; STA Macro_Lo ; I NX ; LDA Psimon„table,X i STA Macro_Hi ;save hi byte of Macro table entry JSR Get_macro jgo start mo tor/speech JSR Kotrdy Do / get status for speech and motor RTS * t Simon_delay; LDA fSimondelay„ _lo ;get macro lo byte STA Macro_Lo i save lo byte of Macro table entry LDA K S imondelay_hi ;get macro hi byte STA Macro^Hi ; save hi byte of Macro table entry JSR Get_j»acro sao start mo tor/speech JSR Notrdy ;Do / get status for speech and motor RTS j * S imon_ random; JSR Random ;get random number (0-255) STA TEMP5 t ■ STA HCEL_HI JSR Random ;get random number (0-255) STA Tesnp„ID2 < ; * ■ STA BIT__CT JSR Random ;get random number (0-255) STA TeJfip^ID • " STA Task_ptr JSR Random ;get random number (0-255) STA Learn„temp ; STA Bored_count RTS J Simon_timer: LDA BEQ LDA STA Milisec_flag ;if >0 then 742 mill seconds have passed Simon_tdn ;hypass if 0 #00 ;clear it Milisec^flag ;reset LDA Bored_timer ;get current timer * 742mSec sec BEQ Simon_tdn ;do nothing if 0 DEC Bored^timer f-1 5imon„tdn i RTS ; P b imon_tablet DW 430 ;front switch dw 431 ;back £ i witch m 433 ;sound sensor DW 432 j light seneor ( 00 ) ( 01 J ( 11 } (It k end swaped in tabled ( 10 } simon_ convert: DB 08h DB lOh DB 04h DB Olh J Simoruwon.tbl: DW 72 DW 72 DW 72 DW 72 ;converts game table to sensor table ;front sw ;back sw ;light ;sound ; for each game won there is a macro (or re-use them) ; 0 (not u&edj, t( place holder} i 1 (not used,» » f place holder) ; 2 (not used,,,, place holder) ; 3 (not used , t ,, place holder) m 12 ; 4 m 72 ; 5 (1st game has 4 sensors, each game adds one) DW 72 j 6 DW 72 7 DW 380 8 DW 380 9 DW 380 10 DW 380 11 DW 471 12 DW 471 13 DW 471 14 DW 471 15 DW 439 16 End_all_game$ : ;when any game ends, they jump here and say done Saygsmdn^lc EQU «D9h ;using macro 473 for game over speech Saygaradn_hi EQU ttOXh ; LDA iRored_reld ;reset bored timer STA Bored_timer ; LDA ttSaygamdn_la ;get macro lo byte STA Macro_Lo ;save lo byte of Macro table entry LDA #&aygsmdn_hi ;get macro hi byte STA Macro^Hi ; save hi byte of Macro table entry JKP Start_macro ;go set group/table pointer for motor & spch ;Burp attack egg Burpend^lo EQU #D6h ;using macro 470 for user feed back Burpsnd^hi EQU #Qlh ; Game_Burp: JSR Clear_all„gam LDA #Bored_reld ;reset bored timer STA Bored„ timer ; LDA #Burpsnd_lo ; get macro lo byte STA Macro_Lo ; save lo byte of Macro table entry LDA HBurpsncLhi ; get macro hi byte STA Macro_Hi ; save hi byte of Macro table entry JMP Start_macro ;go set group/table pointer for motor & spch jeaster egg says NAME A-64 Qairue_name: C1ear_a11_gam JSR LDA #Bored_reld ; res^t bored timer STA Bored_timer ; LDA Name ;current setting to r table offset CLC HDL A ; 2 1 s comp TAX LDA Name_table,X ;get lo byte STA Macro_Lo ;save Jo byte of Macro table entry INX ; LDA Name„table,X ;get hi byte STA Macro_Hi ; save hi byte of Macro table entry JMP Start^macro ;go set group/table pointer for motor & spch ;Twinkle song egg ; When song i >lete, if both tront and back switches are pressed ; we goto dec p. That means only the invert can wake us up, not ; the invert -tch. Twinklsnd_lo Twinklsnd_hi EQU #D5h ;using macro 469 EQU ifOlh ; Sleep^hi EQU *A6b .using macro 166 (before going to sleeps EQU flOOh i Garnettwinkle: Gtwnk: JSR C1ear_a11 LDA 103 ;song counter STA hcel^ld ; set DEC HCEL„LD r-1 LDA Stat„2 ;Get system clear done flags AND #Not„tch„ft ;clear previously inverted flag AND *Not_tch„bk ;clear previously inverted flag STA Stat J2 ;update LDA iBored^reld preset bored tiimr STA Bo red„timer f LDA #Twinklsnd_lo ;get macro lo byte STA Macro_Lo ;save lo byte of Macro table entry LDA #TwinkIsnd_h i ?get macro hi byte STA Kacro^Hi ;save hi byte of Macro table entry JSR Get^macro ;go start motor/speech JSR Notrdy ;Bo / get status for speech and moti JSR Test_all„sens ; get status JSR Test_ali_sens ;get status 2nd time for defcounce LDA Stat 4 i switch status AND #l$h ;isolate front and back switches CMP tl£h BEQ Start_sleep ;if both switches pressed, goto sleep LDA HCEL_LQ ;get song loop counter END Gtwnk ; loop A-65 JMP Idle ;not so egg complete _s1eep: LDA #Sleep_lo ; get macro lo byte STA Macro_Lo ;save lo byte of Macro table entry LDA 8Sleep_hi ;get macro hi byte STA Macro^Hi ;save hi byte of Macro table entry JSR Get^macro ;go start motor/speech JSR Notrdy ;Do / get status for ; speech and motor LDA #llh ;set deep sleep mode STA Deep_eleep 1 JMP GoToSleep ;nity-night ;Rooster loves you egg Roostersnd_lo EQU #C4h fusing macro 4 68 Roosterand_hi EQU #01h ; Game_roos ter j JSR Clear_al.I_gairL LDA #Bored_reld ;reset bored timer STA Eored_timer * LDA #Roc11 switch triggers when ball falls off center and I/O goes CK_tilt; ,'tilt sensor JSR OetJTilt ;go ck for sensor trigger BCS Norma l_ti It ;go fini normal speh/motor table JMP Idle ;no request Get_Tilt; ;this is the subroutine entry point. LDA Port_D ;get I/O AHD #Ball_eide ;ck if we tilted on side BNE Do_bside ;jump if hi LDA Stat_2 ; Get system AND #Not_bsid© ;clear previously on side flag STA Stst_2 :upda t e 5idevout j CLC ;clear indicates no request RTS t Do_baide: LDA Stat_2 ;system AND #Bside_dn ;ck if previously done BNE Sidevout ;jump if was LDA Stat_2 ;get system ORA frBside_dn ;flag set .only execute once STA Stat_2 ;update system LDA Stat_4 ;game mode status ORA •tiBLtilt ;flag sensor is active STA Stat_4 ;update SEC ;carry set indicates sensor is triggered RTS ; Normal^til t : ;ldle rtn jumps here to complete speech /too tor table ? also for testing, when tile is triggered, it resets all enster egg routines to allow easy entry of eggs. J SR C1 e a r_a 11 _g am JSR Life ;gu tweek health/hungry counters BCS More^tilt ; if clear then do sensor else bail JMP Idle j done Hore^tilt; LDA «Tilt_eplit 19 * t STA IN^DAT LDX 1Seq_tlit ; get LDA IRan_tilt ;get JSR Ran^seq random/sequenrial split ;save for random routine how many sequential selections number of random sleet ions ;go decide random/sequential LDX £ensor_timer ;get current for training subroutine BCS Tilt_ran ; Random mode when carry SET L0A Sensor^timer ; ck if timed out since lar.t action BEQ Tilt_reset ;yep LDA Til recount ; save current STA BIT^CT ;temp store INC Tilt^count ;if not then next table entry LDA Til t,_ count ; get CLC SBC #Seq„tilt-l ;ck if > assignment see Tilt_side ;jump if < LDA #S*q_tilt-l ;dont inc off end STA Ti1t_count JMP Tilt .side ;do it Tilt. .reset: LDA MOO ; reset to let entry of sequential STA BIT^CT ;temp store STA Tilt_count Tilt. .side: LDA ftGlobal_time ;get timer reset value STA Sensar_timer \ reset it LDA BIT_CT ;Acc holds value for subroutine Tilt. .ran: STA IN„DAT ;save decision LDA #Tilt_ID ;which ram location for learned word count (offset } JSR £tart_le«rn ?go record training info LDA IN DAT jget decision JSB Decid_age ; do age calculation for table entry LDX TEMPO ; age offset uDA Tilt_Sl 4 X ; get lo byte STA Macro_Lo ;save lo byte Of Macro table entry INX LDA Tilt_si 4 x ;get hi byte STA Macro_Hi ; save hi byte of Macro table entry JMP Start_macro ; go set group/table pointer for motor & speh ; Inverted ball switch triggers when ball touches top and I/O goes hi. Ck_invert t upside down sense J£R Get^invert ;go ck for sensor trigger BCS Normal^!overt ;go fini normal spch/taotar table JMF Idle i no request Get_invert: ;this is the subroutine entry point. A-68 LDA Port_D ; get I/O AND #Ball_invert ;ck if we upside down BNE Do__binvrt ;jump if inverted (hi* LDA Stat_2 ; Get system AND •Not^binvrt ; clear previously inverted flag STA Stat_2 ; update Invrt_out ; CLC ;clear carry indicates no sensor change RTS } Do^binvrt : LDA Stat_2 ;get system AND *Binwrt_dn ;ck if prev done bne Invrt_out ;jump if was LDA Stat_2 ;get system ORA #Binvrt_dn ; flag set ,only execute once STA Stat_2 ; update system LDA Stat_4 ;gam@ mode status ORA #Do_invert ; flag sensor is active STA Stat„4 ; update SEC ;set indicates sensor is triggered RTS i Normal..invert : JSR Life ;go tweek health/hungry counters BCS More_invert ;if clear then do sensor else bail JHF Idle ; done More^invert ; +#******** LDA iInvert_spiit ;get random/sequential split STA INJ3AT ;save for random routine LDX #Seq_invert ; get how many sequential selections LDA #Ran_invert ;get number of random elections JSR Ran_seq ;go decide random/sequential LDX Sensor^timer ;get current for -training subroutine BCS Invrt_md ;Random mode when c^rry SET LDA Sensor_„t imer ;ck if timed out since last action B *Q Invrt^reset ;yep LDA Xnvrt^count ; save current STA BITJTT ;temp store INC Invrt_counfc ;i £ not then next table entry LDA Invrt.count ;get 1 I : / W m # - .S' s m a A-69 CLC SBC ISeq_invert~ 1 jck if > assignment BCC Invrt_set ; jump it < LDA ISeq_invert- 1 ;dont ine off end STA Invrt^count JMF Xnvrt_>et ;do it Invrt. .reset : LDA #00 ; reset to 1st entry of sequential STA BIT_CT ; ternp store STA Invrt_count ; Invrt, ^$et : LDA #Giobai_tiut£ ; get timer reset value STA 5cmsor_timer ;reset it LDA RITJTT ;speech to call Xnvrt, _rnd: STA IN_DAT jsave decision LDA #Invert_ID ; which ram location for learned word count (offset) JSR Start_learn ;go record training info LDA IN..DAT ;get back word to speak JSR Decid_age ;do age calculation for table entry LDX TEMPO ; age offset LDA Invrt„si , x ;get lo byte STA Macro„Lo ;save lo byte of Macro table entry INX i LDA Invrt_Sl , X ;get hi byte STA Macro_Mi ; save hi byte of Macrci table entry # JHP Start_macro ;go set group/table pointer for motor k spch - - *. Ck_back ; ; Back touch sensor JSR Get*_back ;go ck for sense** trigger BCS Normal back ;go fini normal speh/motor tab 1 e JMP Idle ;no request Get_back : ;this is the ► subroutine entry point► LDA Port_C ;get I/O AND #Touch_jbck ;ck if Firby’s back is rubbed BEQ Do_tch_bk ;jurap if 1o LDA Stat_2 ;Get system AND #Not_^tch_bk ;clear previously inverted flag STA 3tat_2 i update Tchl_OUt: CLC ;clear carry for no sensor request RTS l Do_tch_bk: LDA Stat_2 ;get system AND ttTchbk^dn ;ck if prev done BNE Tchl_out ijump if was A-70 LDA Stat_2 /get system ORA tTchbk„dn /flag set ,only execute once STA stat_2 /update system LDA Stat_4 /game mode status ORA #Do_back i flag sensor is active STA Stat__4 /update SEC /set indicater sensor is triggered RTS i Normal_back: ; enter here ta complete sensor speech/motor JSR Life ;go twt k health/hungry counters uCS More T Jaack • if clear then do sensor else bail JHF Idle ; done More^back; LDA flBack^split ;get random/sequential split STA IN_DAT ;sa for random routine LDX *Seq_back .get how many sequential selections LDA #Ran„back /get number of random sleet ion# JSR Ran„seq /go decide random/sequential LDX Sensor^timer ;get current for training subroutine &c* Back__rnd /Random mode when carry SET LDA Sensor^timer ;ck if timed out since last action BEQ Back_reEet /yep LBA Tcbi>ck_count ; save current STA BIT_CT ;temp store IHC Tchbck_count ;if not then next table entry LDA Tchbck^count ;get CLC SBC lsetback-1 ;ck if > assignment BCC Back_eet ;jump if < LDA 1 Seq_ba ck-1 ;dont inc off end STA TchbcRecount ; JMP Back-set /do it Back„reset: LDA 1*00 ; reset to 1st entry of sequ- ntial STA BITJCT i temp store STA Tchbck^count Back_seti LDA *Global_tim© ; get timer reset value STA Sensor^timer /reset it LDA SIT^jCT ;get current pointer to tables Back^mdr IN_DAT ;save decision #Back_lD /which ram location for learned word count .Jgfe/ IjggE-ra A-71 {offset) JSft Start^leam ;go record training info LDA INJ1AT ;get back word to speak JSR Decid^age ;do age calculation for table entry LDX TEMPO ;age offset LDA Tback^S 1, X ?get lo byte STA Macro_Lo rsave lo byte of Macro table entry INX 7 LDA Tback„Sl,X i get hx byte STA Macro_Hi jsave hi byte of tUcro table entry JMP Startjmacro ;go set group/table pointer for motor 4 speh The IR routine turns interrupts off for IOC Mete, which stops the timing chain {multiplies time by 100). This front end leaves interrupts on and site in a loop for 5 msec to determine if I.H, is active and if so, executes normal I,R. routine, else exits* ******** start Tracker ;The way to include the IR program, I list as the following; ;It shows the program prargraph from Ck_IR; to Ck_frent: ;of cous© r It also attach the IR.asm file ;the IR.asm file I just make a little bit change, to make they work at ; any system clock assume by constant SystetnClock: ;please advis e * , ;> Ck_IR: LDA BEQ JMR CKIFL-Sj lda STA LDA STA IR_req: LDA AND BNE LDA AND BNE DEC BNE LDA STA DEC BNE JMP Got_IR; LDA *05 ;number of times to ck for TR reception Last_IR ;timer stops IR from hearing own IR xmit CKIR_S ;jump if timer 0 Idle ;abort if >0 set loop timer set gross timer Port_B *IR_IN Got_IR portja *TR_IN Got_IR TEMPI IK_req *FFh TEMPI T&1P2 IR_req Idle ;ck if IR signal active {hi) ;get port pin ;go do input if active ;ck if IR signal active {hi) ;get port pin ;go do input if active t inside loop # ; reset loop timer ; outside loop ;loop thru :no activity found A-72 STA TEMP4 Got_IR2: JSR D_IR_test BCS New_IR DEC TEHP4 ; BKE Got_IR2 JKP Idle New_IR: JMP Normal^IR ;used as a subroutine for diags ;jump if found data ; 1 oop jbail out if not Begin Koball's code D_IR_testi SEI JSR GBYTE LDA *Intt_d£lt ;; Tracker STA Interrupts ;;Tracker LDA IN_DAT CLI RTS ;;Tracker Tracker First time to read ;Initialize timers, etc. ;load reg ;;1oad result to ACC ;;Tracker Normal_IR; ; There are 4 I.R. table arranged as all other tables, on© for each age. ; But here we get a random number which determines which on© of the ; four tables we point to and the actual number received is the one of ; sixteen selection. LDA INLDAT AND #0Ph STA INLDAT ;;Tracker add ;kill hi nibble I compliment of lo nibble) ; save CMP #08 ;test for special sneeze command BNE No_Bneeze ;jump if not LDA 4Real1y_sick-30 ;force Furby to get sick STA Sick_counter ;update No_ aneesej LDA Bored_timer ;get current count STA TEMPI ; save Get JSR Random ;get something DEC TEMPI ;-l BNE G©t_IR^rnd ; loop getting random numbers LDA 5eed_l ;get new random pointer AND #0Fh ;kill hi nibble STA TEMPI ; save CLC SBC 411 ;ck if > 11 BCC NormIR_2 ;jurap if not LDA #96 ;point to table 4 'M JMP Got^normlR NomIF^2: LDA TEMPI f recover random number CLC 0$ .r . m W ' it uM A-73 SBC #C7 ;ck if > 7 BCC NorraIR__3 ; jump if not LDA #64 ;point to table 3 JMF NormIR_3i Got_nonaIR i •'** LDA TEMPI ; recover random number CLC SBC #03 ;ck if > 03 BCC NormIR_4 ;jump if not LDA #32 ;point to table 2 JMP Got_normlR ; NoncIR_4: LDA 100 ;force table 1 Got_normIR r CLC ROL IN_DAT ;16 bit offset for speech CLC ADC TAX injdat icreate speech field ofsett pointer ;set offset LDA IR_S1,X ;get lo byte STA INX Macro_Lo ;save lo byte of Macro table entry f LDA IR_S1,X ;get hi byte STA Macro^Hi save hi byte of Macro table entry JMP Start^macro ;go set group/table pointer for motor speh Include IR2.Asm ; asm file end Tracker Ck^front: ; touch front (tummy) JSK Get_f ront ; go ck for sensor trigger BCS Normal_front ;go fini normal spch/motor table JHP Idle ; no request Get_£rent: ;this is the subroutine entry point. LDA AND BE Q LDA AND STA Touchwends CLC RTS Do^tch^ft: LDA AND RNE Port_C #Touch„frot Da_tch„ft Stat_2 (SNot^tch^f t Stat_2 8tat_2 #Tchft_dn Touch_end -get I/O ;ck if Firby's chest is rubbed ;3Uinp if lo ;Get system ;clear previously inverted flag ;update ;clear indicates no sensor request ?get system ;ck if prev done i jump if was LDA Stat_2 ;get system ORA #Tchft_dn ;flag set .only execute once STA Stat_2 ;update system LDA Stat_4 ;game mode status ORA #Do_tumay ;flag sensor is active STA Stat_4 .-update SEC ;set indicates sensor is triggered RTS ? Normal_f ront: enter here to complete sensor speech/motor JSR Life ;go tweek health/hungry counters BCS More„front ; if clear then do sensor else bail JMP Idle i done More_£ront: LDA tFront^split ;get random/aequential split STA IN_DAT ;sa^r© for random routine LDX *Seq_front ;get how many sequential selections LDA #Ran_front ; get sequential split J£R Ran_seq ;go decide random/sequential LDX Sensor^timer ;get current for training subroutine BCE Front_rod t Random mode when carry set LDA Sensor^timer ;ck if timed out since last action BEQ Front^reset ;yep LDA Tchfmt_count ;save current STA BITLCT ; temp store INC Tch£rot_count ;if not then next table entry LDA Tchfmt^count ;get CLC SBC #Seq_front-l ick if > assignment BCC Front_set ?jump if < LDA #Seq_front-l ;dont inc off end STA Tch f mt_c oun t ; JMP Front_set ;do it Front_reset: LDA «00 ;reset to 1st entry of sequential STA BITJCT ; temp store STA Tch£rnt_count i Front^set s LDA #Global_tiiae ; get timer reset value STA Sensor^timer ;reset it LDA BITJCT ;get current pointer to tables Front^rndj v.:. STA INJDAT ■ A-7S t save decision #Front_ID ; which ram location for learned word count LDA loffset ) JSR Start_learn ;go record training info LDA IN_DAT ; get back word to speak JSR Decid_age fdo age calculation for table entry LDX TEMPO ;age offset LDA Tfmt_5l,X ;get lo byte STA Macro^Lo ;save lo byte of Macro table entry i INX LDA Tfrnt_Sl i X ;get hi byte STA Macro_Hi } save hi byte of Macro table entry JMP Start_jnacro ;go set group/table pointer for motor & spch Ck_feed: ; food sensor { JSR Get_£eed ;go ck for sensor trigger BCS Normal..feed ; go fini normal spcb/motor table JMP Idle ;no request Get^feed: ;thie is the subroutine entry point, ; Each trigger increments the health status at a greater rate ; Special enable routine to share port pin D1 with invert switch. ; Feed switch is pulled hi by the DACl laud-a) output only after ; we test the invert line. If invert is not hi, then turn on ; DACl and ck feed line on same port D1. LDA AND BEQ CLC RTS St_Eeed: LDA STA LDA AND BNE LDA STA LDA AND STA Feed^out: CLC RTS Port_D * ;get I/O #Ball_invert ;ck if we are inverted st_feed ;if not inverted Uo=not inverted! ;indicates no request ;i£ inverted then bypass #FFh ;turn DAC2 on to enable feed switch DAC2 ;out PortJO ;get I/O #Bali_invert ;ck if feed switch closed Start_£eed ;jump if hi »00 DAC2 ; clear feed sw enable St&t_3 ;Get system iNot^feed ;clear previously inverted flag Stat_3 ; update ;clear indicates no request ;go test next Start^feedi LDA !t00 S| A-76 STA DAC2 ;clear feed sw enabie 7 LDA 5tat„3 ; get system ; AND KFeed^dn ?ck if prev done ? BNE Feed_out ;jump if was ; LDA Stat_3 ; get system ; ORA #Feed_dn ; f lag set , only execute once ; STA Stat_3 ; update system LDA Stat„i ;game mode status ORA 8Po„£eed ;flag sensor is active STA Stat_4 ;update SEC ;set when sensor is triggered RTS # Normsl_f eed ;enter here to complete speech/motor t health table calls here and decision for which speech pattern LDA KFood :each feeding increments hunger counter CLC ADC Hung ry_counter ; l eed him ! BCC Feeding_dn ;jump if no roll over LDA ttFEh ; raax count Feeding_dn: STA Hungry_counter ; updat e Hit i JSR Life t go finish sick/hungry speech LDA #Feed_split ;get random/sequential split STA IN_DAT ;save for random routine LDX ttSeg_feed ;get how many sequential selections LDA §Ran_feed ; get random assignment JSR Ran_s eq ;go decide random/sequential LDX $ensor„timer ;get current for training subrout BCS Feedrand ; Random mode when carry set LDA Sensor_timet ;ck if timed out since last action BEQ Feedereset ;yep LDA Feed^count ;save current STA B1T_CT ;temp store INC Feed^oount jif not then next table entry LDA Feedlcount ;get CLC SBC #Seq_£eed-l ; ck if > assignment BCC Feed^s w t ;jum|. if < LDA #Seq„£eed-1 ;don' inc off end STA Feed_count JHP Feed_«et ; d o it Feed^reset; A-77 LDA #00 ;reset to 1st entry of sequential STA BIT CT ;temp store ST/v Feed_count Feed_set : LDA #Global_time ;get timer reset value STA Sensor„tInter ;reset it LDA BIT_CT ;get current pointer to tables Feedrand; STA IN_DAT ;sa-e decision LDA #Feed_ID ; which ram location for learned word count (offset) JSR S tar t_learn ;go record training info LDA IW_DAT ; get back word to speak JSR Ds*cid_age ; do age calculation for table entry LDX tm&o ;age offset LDA I'eed^Sl r X ;get lo byte STA Macro^Lo ;save lo byte of Macro table entry 1NX i LDA Feed_Sl,X r *get hi byte STA Macro_Hi ;save hi byte of Macro table entry JMP Start^iMcto ;go set group/table pointer for motor fit spch Ck„light; ;Bright light sensor JSR BCC JMP Ck_light2: JMF Qet^light Ck^light2 Idle ;now handled as a subroutine ;jump if new level > reff ;nothing to do Normal^!ight ;jurop if new level > reff Include Light5*asm ;asm file Nort&al_light: ; below routines are jumped to by light exec if > reff JSR Life •go tweek health/hungry counters BCS More_light ;if clear then do Bensor else bail JMF Idle ;done More_light: LDA STA #Light_split IW^DAT i get random/sequential split ;save for random routine LDX #£eq_light ;get how many sequential selections LDA fRan_light ;get sensor split table JSR Ran_seq ;go decide random/sequential LDX Sensor_timer ;get cu.rent for training subroutine BCS Lghtrand ; Random mode when carry set LDA Sensor_t imer ;ck if timed out since last action BEQ Lght_reset ;yep LDA Lght_count ; save current STA BIT_CT ; temp store INC Lght_count ; i £ not then next table entry LDA Lght_count ;get CLC SBC ISeq_light-l ;ck if > assignment BCC Lght^set ;jump it < LDA #Seq_Iiyht-l ;dont inc Off end STA Lght^count ; JMP Lght^set ;do it Lgb re&et: LDA #00 ;reset to let entry of sequential STA BIT_CT ;save temp store STA Lght_count ; Lght^set: LDA #Global_t ime ;yet timer reset value STA Sensor„timer preset it LDA BIT^CT ;get current pointer to tables Lghtrand: STA ; save seq/rand pointer LDA Stat^.3 ; ays t etn AND KLght^stat ; ck bit for light/dark table BEQ Do^dark ;jump if clear LDA TEMP4 ;yet pointer STA IN„DAT ;save decision LDA #Light_ID ;which ram location for learned word count {c£ fset) JSR Start^learn ;go record training info LDA XN_DAT ;get back word to speak JSR Decid_age fdo age calculation for table entry LDX TEMPO ;age offset LDA Light_SX r X ;get lo byte STA Hacro^Lo ; save lo byte of Macro table entry INX LDA Light _S1,X jget hi byte STA Hacro^Hi ;save hi byte of Macro table entry JMP St*rt_macro ;go set group/table pointer for motor U spch Do_d«rk; LDA TEMP4 iget pointer STA IN_DAT ;save decision LDA {offset) JSR LDA JSR LDX LDA STA INX LDA STA JMP #Dark_ID Start_learn IN_DAT DecidLage TEMPO Dark_5l,X Macro_Lo Dark_£l,X Macro„Hi Stort_mcro ;which ram location for learned word count ;go record training info ;get back word to speak ;do age calculation for table entry 7 age offset ;get lo byte ;save lo byte of Macro table entry ;get hi byte ;save hi byte of Macro table entry 7 go set group/table pointer for motor & spch Ck_sound: JSR BCS JMP Ck_sound2: JMP ;Audio sensor Get^sound ;now handled as a subroutine Ck^souudi ; jump if new- level > ref E Idle ;nothing to do Normal_sound ;jump if new level > reft Get _sound: ;alt entry' for diagnostics ; The microphone interface generates a square wave of 2k to 100k. ; We can loop on the sense line and count time for the ; hi period to determine if sound has changed and compare it to previous ; samples * SEX LDX STX LDX STX Ck_snd2: DEC BEQ LDA AND BEQ LDX STX Ck_snd3: INC BEQ LDA AND BNE (I5*166tt»s JMP Snd^over; #00 TEMPI #FFh TEMP 2 TEMP2 Ck_snd4 Port_D #Mic_in Ck_snd2 #FFh TEKP2 TEMPI Snd_ove Port_D #Kic_in Ck_snd3 2,49uS] Ck_sndd .disable inter nipts ;clear ;clear buffer ;load loop timer ;jump if timed out ;get I/O 7 ck sound elk is hi 7 wait for it to go hi ;load loop timer jccmc during lo elk +5 ?jump if rolled over +3 ;get I/O +2 , ,-ck if still hi +2 ~ ;loop till lo +3 ; done A~M we should never get also prevent system here so bail back to idle and this will lockup when no elk LDA STA Ck_snd4' #250 TEMPI ;never allow roll over CLI ; re-enable interrupt JSR Kick_IRQ ;wait £<-i motor R/C to start working LDA TEMPI ;get count CLC ;clear SBC #05 ;is diff > 5 BCC No_snd ;bail out if not LDA Stat_3 ;system AND iSoundLstat nek for prev done BNE No_»nd2 ;wait till quiet LDA £tat_3 ;system ORA #Sound_etat ; STA Stat_3 ;set prev dn LDA Stat_4 ORA #Do_snd ;set indicating change > reff STA Stat„4 SEC ;carry se indicates no change RTS Mo^snd; LDA £tac_3 ;get system AKD #Nt_snd_stat jclear prev dn STA Stat_3 ;update No_snd2 s CLC ;carry clear indicates no sound RTS 7 done Normal_s oundi j below routines are jumped to it sound pulse detected JSR Lite ;go tweek health/hungry counters BCS Morelsound ;it clear then do sensor else bail JHP Idle ;done Morelsound: LDA fSound_split STA IN_DAT LDX #Seq_sound LDA #Ran_sound JSR Ran_»eq ;get random/sequent in1 split ;save for random itine ;get how many sequential selections ; number of random selections ;go decide random/sequential LDX Sensor_timer ;get current £or training subroutine BCS Sndrand ;Random mode when carry set LDA Sensor_timer ;ck if timed out since last action BEQ Snd^reset ;yep LDA Scnmd^count ; save current STA BIT„CT store INC Sound_coujit ;if : not then next table entry LDA Sound_count ;get CLC SBC *Seq_sound-l ;ck if > max assignment acc Snd_set ;jump if < LDA #Seq_sound“l ;dont inc off end STA Sound_count ; JKP Snd_set ;dc it Snd_reset: LDA *00 ;reset to 1st entry of sequential STA BIT_CT ;tf£3p store STA Sound^count ; Sttd_set; LDA #Global_time ;get timer reset value STA SensQr_t imer ; reset it LDA BIT_CT ;get current pointer to tables Sndrand; STA IN_DAT ;save decision LDA #Sound_ID t which ram location for learned word count (offset ) JSB Start_learn ;go record training info LDA IN„DAT ;get back word to speak JSR Decid_age ;do age calculation for table entry LDX TEMPO ;age offset LDA Sound„Sl,X ;get lo byte STA Macro_Lo ;save lo byte of Macro table entry INX LDA Sound_S1, X i get hi byte STA Macro_Hi ;save hi byte of Macro table entry JMP Start_macro ;go set group/table pointer for motor k spch aitttttmitttittittittttittttmtiitttitttliitliittlilliiiitllitlitllt Hi it ;*Hisc Subroutines ittit ; SENSOR TRAINING ; Training for each sensor is set up here and the decision if the A-82 learned ; word should he played or not* i Tesap„ID hold the ram offset for the last sensor of the learned word, - Temp3lB2 hold the ram offset for the current sensor of the learned word, ; IN_DAT holds the current word the sensor chose, and will be loaded with ; the learned word instead if the sensor count > the random number that was ; just sampled, ie,, force learned word to play. ; If the sensor timer is at 0 when entering here, then the LEAR&JTEMP ; ram location is cleared, else the current learned word is loaded. If ■ the learned word i® 0 then all entries are cleared. * when entering, check sensor timer and bail if 0, THen test if this is ; the back switch and if so then move the current sensor to previous sensor ; ram and increment the counter. i If this is not the back switch, Chen get previous sense* ram counter and . i decrement it. THen move all current senior information to previous and % return to caller. « Because of training difficulties, we now need two back touches to r increment training counters. If only one occurs then the normal decreased t ; happens. This double back touch helps to prevent accidentally training ; with a new macro by hitting the back sw when it is not the macro you ; have been working with. r art^leam STA LPA CMP BNE CPX BNE Temp^ID2 ;sensor ram location of counter (current sensor) Temp_ID2 ;get current sensor ID %£Efi ;EE= this is the back switch (special) Not_BCK i jumpif not #qq ;ck if sensor timer timed out Leam^updat© ; jump if is back switch and not timed out NoE_BCK: LDA CMP BEQ T«mp_ID ;get previous sensor ram offset #EEh ;ck if last was back sw Not_learned ;jump if no sensor prev LDX LDA CMP BNE LDA sensor L, '* ' 3t fe wm CLC SBC STA BCS BPL WA &TA TaB^p_lD jget prev ous sensor ram offset Tilt_learoed,X ,*get learned word counter from ram Leam^tecqp ;compare with last word Do_J,m2 ;bail out if different Tilt Irruen^X ;preV sensor counter ^offset to current #Leam„chg ;dec learned word counter since not back sw Ti11rn_cnt iLeam^chg Do_lrn2 ;juxop if not negative (rolled over' #00 Tilt_irrue»t,X ;«t tQ z**®* no roii OVer ;get sensor learn ram offset ;get a number Do_lm2i LDX Temper) JSR Random CLC LDA Tilt_lm_ent.,X ; get count CMP tFFh ;check for max BEQ Do_lrn2a ; bypass random CLC SBC SeedLl ; random minus learned ward counter BCC Not_leamed ; if less than random then bail out DoJmSa: LDA Tilt_learned # X ;get learned word counter from ram AND tOPh ;make sure never off end of table STA Tilt_leamed, X ;also in ram STA 1N_0AT ;force learned word for sensor Not_learned: LDA INJDAT ;get curent sensor ward STA Lenrn_temp ;SAVE FOR NEXT PASS LDA Temp_IB2 ;get current sensor STA Temp_ID .save in previous sensor ram LDA Stat^O ;system AND *EFh f"Train__Bk_prev p clear 2nd time thru flag STA Stat_D ;update RTS t done-ola Learn_update: LDA Temp_ID ;sensor ram location for last trigger CMP •EEh this is the back switch {special) BEQ Not_leamed ;bail out if last trigger was also back sw CMP #FFh ;only happens on power up < BEQ Not_learned ;false call LDA Sta t_0 ;system AND #Train_Bk_prev ;is this the let or 2nd time thru BNE Lm_updl ;jump if 2nd back sw hit LDA Stat„0 ;ays tern OKA #Train_Bk_jir©v ; this is 1st time STA Stat_G ?update RTS ,-my job is done here ! Lm^Updl : LDA StatJ) ;system AND *EFh ; *• Tra i n_Bfc_pr©v " cl ear 2nd t ime thru flag STA Stnt_G i update LDX Terra: _ ID ;sensor ram location for last trigger LDA Tilt_learned,X jget learned word from ram CMP Leam^temp ;ck for training of some word BEQ Lm^upd^ ;jump if is LDA Learn_temp ;get new word trainer wants to use STA Tilfc^learned,X ;update new word LDA too ;reset to 0 for new word to train STA j JMP Not_learned ;done for now Lm_upd2 : CLC LDA Ti 1 1 „ Indent, X ;get learned word counter from ram ; on 1st cycle of new learn, we set counter 1/2 way t chicken) BNE Lm_upd2a ;jump if not 0 LDA tSOh ;1/2 way point STA Tilt_irn_cnt,X ;update sensor counter JlfP €lear_leam ;go finish Lra_upd 2 a: j----end 1st cycle preload ADC *Leam_chg ;add increment value BCS Leam^overfiw i jump if roiled over STA Tilt_lm_cnt,X ;update sensor counter JMP Clear^leam ;go finish Lean\_o ve r f 1 w: LDA #FFh ;set to max STA Ti1t_lrn„cnt,X ;save it Clearelearni JMP Do_lrn£ ;done ; When IRQ gets turned of£, and then restarted, we wait two complete ? cycle to insure the motor R'C pulses are back in sync. Kick^lRQ: LDA Stat _J3 ;get system AND #Nt_IRQdn ;clear IRQ occured status STA £tat_3 ;updat e ays t am LDX tt03 ;loop counter Kick2; LDA Stat_3 ;system AND «XR{L.dn ■ck if IRQ occured beq Kick2 ;wait till IRQ happens LDA Stat_3 ;get system AND §Nt_IRQdn ;clear IRQ secured status STA Stat_3 ;update system DEX BNE Kick2 ;loop til done RTS ;is done jEEPKQM EEAD/WRITE ; Read fit write subroutines , ++**++*****************+++*+++*+********"**************'*++•**** } Enter with *TEMPO 1 holding adrs of 0-63. Areg holds lo byte and } Xreg holds hi byte. If carry is clear then it was suceesfull, if j carry is set the write failed. j MODIFIED eeprom f load lo byte in tempi and hi byte in temps i and call EEWRIT2. LDA #00 juse DAC output to put TI in reset STA DAC1 * SEX ;turn IRQ off LDA #00 iEEPROM adrs to write data to STA Sgroup ;save adrs LDA #13 jnuiflber of ram adrs to transfer tx/2) STA Which^delay ; s ave LDA #00 offset STA Which^motor ; save i Need one read cycle before a write to wake up EEPROM LDX Which_mator ;eeprom address to read from 3SR EEKEAD ;get data (wakes up eeprom) Write_loop; LDA Sgroup jget next EEPROM adrs STA tempo ;buffer LDX Which motor ;ram source LDA Age*ir ;lo byte (data byte Si) STA TEMPI ;save data bytes INC Which_motor f INK LDA Age,X ; STA TEMP* ; hi byte (data byte #2) 3 SR EEWRIT2 ;send em BCS EEfail j j ump i £ bad INC Sgroup ; 0-63 EEPROM adrs next INC Sgroup ;0-63 EEPROM adrs next INC Which^jRotor ;next adrs DEC Whieb__delay ;how many t o send BNE Write_loop ;send some more RTS ; done (eeprom writes 2 ;■ READ EEPROM HERE AND SETUP RAM $_EEPftOM_R£AD: ; Xreg is the adrs 0-63, system returns lo byte in Areg L hi byte in Xreg. ; on call; X * EEPROM data address (0-63) ; on return; ACC = EEPROM data (low byte) (also in TEMPO) ; X * EEPROM data (high byte) (also in TEMPI) lda #00 STA DAC1 SEX ;use DAC output to put TI in reset ;turn IRQ off LDX #00 ;eeprom address to read from JSR EEREAD ;get data (one read to init system) LDA too ;EEPROM adrs to read STA ' Sgroup ;save a&rs LDA 113 ; number of ram adrs to transfer ix/2) STA Which^delay i save LDA #00 ;Xreg offset to write ram data STA Which_jaotor ; save Read_loop: LDX Sgroup ;EEPROM adrs JSR REREAD ;get data LDX Whioh^jnator ;ram destination LDA TEMPO ;get data STA Age t X rlo byte (data byte #1) INC INX Which_j&otor * INC Sgroup fO-63 EEPROM adrs next LDA TEMPI :get data STA Age f X ; lo byte (data byte #2} INC Whidh^otor ; next adrs INC Sgroup ; 0-63 EEPROM adrs next DEC Whieb^delay ihow many to get ** BNE Read„loop ;send some more LDA #00 ;clear rams used STA Sgroup ; STA Which_motor ; STA Which_delay ; CLI j Enable IRQ JSR Kick^lRQ jwait for interrupt to restart JSR TI„reset ;go init TI (uses , Cycle_tirner' ) LDA Port„B_ Image ;get prev state of port S, ORA #001H ; turn on B.O JMP EEE02 ? LDA Port_B_Image ;get prev state of port 3, AND #0FEH ; turn off B.0 STA Port_B i output to port STA Port_B_Image ; and save port image RTS i Output data bit to EEPROtt by placing data bit on EEPROM 01 line and toggling EEPROM CLK line. EEPROH D1 = A * 1 EEPROM CLK - A.0 on call: C = data bit to be output on return: stack usage: D RAW usage: Port_A_imsge OUTBIT: BCS OUTB02 ;branch if output bit = l LDA Port_A„image ;get prev state of port A AND tOFDH turn off A.lr JMP OUTBG4 f LDA Port_A„ittiage ;get prev state of port A ORA I002H t turn on A,1 * h STA Port_A ; output bit to port STA Port_A_image ; and save image 0UTBG4 ; toggle EEPROH clock tOGCUC: LDA Port_A_image iget prev state of A ORA #001H ;turn on A.Q. STA Port_A ;output to port HOP ;delay NOP HOP AND tOFEH STA Port^A ftum off A,D •output to port . - mg J'- • “TV. V V ?|V it ** S& mm A-m mfSia*!,. STA Port_A_image RTS aave image ***** t t Read data IS-bit data word from EEPRQM at specified address or* call: X = EEPRGM data address (0-63) on return: ACC * EEFROM data (low byte) r X a EEFROM data (high byte} ; stack usage; 2 J RAM usage; TEMPO : ; . . EEREAD: STX TEMPO ;scare data addr JSR EEENA ; turn on CS J SEC ;£ end start bit am OUTSIT ? SEC ;send READ opcode (10) JSR OUTBIT ; CLC ; JSR OUTBIT • LDX #6 iinit addr bit count ROL TEMPO ;align HS addr bit in bit 7 ROL TEMPO 1 EERD02 ; RGL TEMPO ;shift address bit into carry JSR OUTBIT ;send it to EEFROM DEX ;bump bit counter B HE EEFJ002 ; and repeat until done LDX #16 ;init data bit count LDA #0 f STA TEMPO ;init data bit accumulators STA TEMPI EEHD04: JSR TOGCLK ;toggle clock for next bit LDA K020H ; test data bit (B.5) from EEPROM BIT Port^E i BNE EERD08 * ; CLC ;EEPROM data bit a 0 JMP EERJD10 # EERDOB; SEC ;EEPRQM data bit * 1 f EERD10; RQL TEMPO ?rotate data bit into 16-bit ROL TEMPI ; mcf-vamla tor DEX ;bump bit counter ; and repeat until done BNE EERDG4 JSR EED1S LDA TEMPO LDX TEMPI RTS turn off CS and return ret w/data byte in ACC and X regs Issue ERASE/WRITE ENABLE or DISABLE instruction to EEPROM (instruction = 1001100000J on call: -- on return: — stack usage: 2 RAM usage: TEMPI FEWEN: LDA JMF HGFFH EEWE02 ; set up t enable inst i EEWDS: LDA #0GQH ; set up disable inst ; EEWE02: STA TEMPI ; save instruction JSR EE ENA ; turn on CS SEC ; send start bit JSR OUTSIT f CLC ; send ENA/DIS opcode (GO) JSR CLC OUTBIT r JSR l LDX OUTBIT # #6 ; irdt instr bit count EEWEC 4 : ROL TEMP 3 ;shift instruction bit into carry JSR OUTBIT ;send it to EEPROM DEX ; bump bit counter BNE RTS EEWE04 ; and repeat until done r Write data byte to EEPROM at specified addresti on call: TEMPO * EEPROM data address (0-61J ACC = data to be written (low byte) X = data to be written (high byte) on return: C = 0 on successful write cycle C = 1 on write cycle time out stack usage: 4 RAM usage; TEMPO, TEMPI, TEMP2 STA TEMPI ;cav€ data bytes STX TEMP2 i EEVfRIT2 s JSR REWEN ;send write enable inst to EEPROM JSR EEDIS ; set ’ low JSR EEENA ; then high again ' * SEC ;send start hit JSR OUTBIT i i CLC •send WHITE opcode (01> JSR OUTBIT ; SEC f JSR OUTBIT f ; LDX 16 init addr bit count RQL TEMPO align MS addr bit in bit 7 RQL TEMPO EEWRQ2; ROL TEMPO •shift address bit into carry JSR OUTBIT ;send it to EEPRGM DEX bump bit counter BNE EEJK02 ; and repeat until done LDX #16 ; init data bit count BEWR06 3 ROL TEMPI rshift data bit into carry ROL TEMP 2 JSR OUTBIT ;send it to EEPROM DEX rbump bit counter BNE EEWR06 ; and repeat until done * JSR EEDIS [cycle CS low 1 JSR EEENA ; i then high again LDA #0 j init write cycle STA TEMPO ■ time out counter STA TEMPI j i EEWRG8; , ; T'. . -*■" LDA I020H ; [test READY/BUSY bit (B.S} BIT HME Port^B EEWR10 ; freon EEPROM ;wait for write cycle to finish DEC TEMPO j ;write cycle time out counter BNE EEWR08 l JSR SEC I1& i> TEMPI EEWRGS EEKH1G , r time out, di gable* EE PROM and eet carry to signal error ' : £[. Si ,J1 I W! ' mm RTS J EEWR10: JSR EEWB5 JSR EEDIS CLC RTS ;send write disable inst to EBPROM 7 set CS low ;clear carry to signal successful write ; Subroutine creates sensor table entry for the selected age. ; One table for each age, ; Enter with Acc holding the 1-16 table selection. ; Exit with Acc k Tempt) holding the offset G-FF of the 1-4 age entry. ; Special condition where we have only two tables instead of 4 ; (where each table is called based on age) f if the *half_age" bit is ; set then ages 1 & 2 call table 1 and ages 3 k 4 call table ?. Decid„age: STA TEMPO ; save D-0f selection LDA Stat_l ;system AND tHalf_«ge ; test if this is a special BEQ Decid^normal ;jump if net LDA Stat_I ; AND *Nt_half_age ;clear req STA Stat_l ;update system LDA Age f *03h ;get rid of bit 7 (9th counter bit ) 2 table select CLC SBC *01 BCC Dec_agel JMP £pcl_ag©2 Decid^normal; ;actual age is 0-3* test if <2 ;choose age 1 ( actually 0 here) ; choose age 2 ( actually 1 here) ;;; mod TestR3a.,.. 2S% of time chose agel to add more furbish after ; ;; he is age 4. JSR Random ;get a number CLC SBC tRandam^age ;below this level selects age 1 BCS Nospcl_age • j ump if > LDA *00 ;set age 1 JMP Do_age ;go do it ;;; end mod Nospcl_age: LDA Age ; get current AND *03h ;get rid of bit 7 (9th counter bit ) CMP *03 iis it age 4 BNE Dec agej ;jump if not LDA *96 ;point to 4th field JMP Dosage ;finish load from table A-92 D#c_age3 t CMP *02 ;ls it age 3 BNE Dec_age2 ;jump if not LDA #64 :point to 3rd field JMP Do_age ;finish load from table Dec_age2 CMP #01 ;is it age 2 BNE D&c_*g &1 ;jump if not Spcl_age2; LDA *32 ;point to 2nd field JMP Dosage .finish load from table Dec_agel: ;age 1 LDA #00 ;point to 1st field Do_age: STA TEMPS ,-save age offset for speech CLC ROL TEMPO ;16 bit offset for speech LD ft TEMPS ;which table entry ADC TEMPO ;create speech field ofsett point STA TOfPO ; save RTS Random/sequential decision control for all sensors. Enter with Acc holding the number of random selections for sensor. Enter with Xreg holding number of sequential selections It.returns with Acc holding the random selection and the carry will be cleared for a sequential mode and set for a random mode* NOTE: if the caller baa no random selections then carry will be ■ cleared. Ran_aeq: STA TEMPI ,■ save random max STX TEMP5 ;save number of sequential® LdA TEMPI ;force cpu status ck BEQ Seq_decisn ; jump if no randans DEC TEMPI ;make offset from 0 Ran_loop: JSR Random ;get n ROK A ;move hi ruble to lo ROR A ROR A RDR A AND iOFh ;get lo nible STA TEMP2 ; save CLC SBC TEMPI 'get max random number from sensor BCS Ran_loop ;loop until =< max value LDA TEMP 2 ;get new number CMP Pr ev_random ;ck if duplicate from last attempt BEQ Ran_ loop ;loop if is STA Prev^random ;update for next pass STA TEMPI ; new LDA TEMPS ;ck if no sequential* A43 BEQ Ran_decisn i force random if none JSR Random ;get random/sequential decision CMP IN_DAT ;random/ a eqentia1 split CMP #80h ;>80=random else sequential BCC Seq^decisn ;jump if less Ran^decisn; LDA TEMPS ;get number of sequential for this pass CLC ADC TEMPI ;add to random for correct table start point STA TEMPI ;update SEC ;eet carry to indicate random RTS ;done {Acc holds answer) Seq_decisn: CLC !clear carry to indicate sequential RTS ;done {Acc holds answer) ; Random number generator, ; SEED^l & £EED_2 are always saved through power down ; TEMP3 & TEMP4 are random temporary files. i Acc returns with random number, Seed^l also holds random number. Random: LDA Seed_l STA TEMP 3 LDA Seed_2 STA TEMP 4 CLC ROL A ROL £eed_l CLC RQu A ROL Seed_l CLC ADC TEMPO STA Seed„2 LDA ton ADC Seed_1 CLC ADC TEMP3 STA Seed„l LDA #00 INC Seed_2 ADC Scyed_l STA Seed^l RTS ; return with random number in Acc k seed„l Life: ; Each FEET trigger increments the HUNGRY counter by {EQU = FOOD*. ;Hungry >80 (Need_£ood) ;Hungry >80 co +- Sick co + Sick = random HUNGRY/SENSOR {Really_sick } = random {Really_sick* = random HUNGRY/SICK ;Hungry >60 then each sensor motion increments Sick ;Hungry <60 then each sensor motion decrement e Sick ; When the system does a cold boot, we set HUNGRY & SICK to FFh ; When returning from here, carry is set if sensor should execute ; normal routine, and cleared if sensor should do nothing- ;REFF only - ; H 1 :ngry_counter ;sick_counter ; Food EQU 20h jNeed^food EQU eoh ;Sick_ref £ EQU 60h ;Eeally_®ick EQU i amount to it -rease 'Hungry' for each feeding i be low this s arts complaining about hunger ;below this starts complaining about sickness COh ;below this only complains about sickness ;Hungry_dec EQU ;Sick_dec EQU ; Max_s i ck EQU 01 ;subtract 01 ;subtract see EQU X amount for each X amount for each sensor trigger sensor trigger LDA Hungry^counter ;current ;mod F-rels2 ; i CLC SEC ;end mod SBC #Hungry_dec ; -X for each trigger BC5 frst_„life ;jump if not neg LDA 100 ;reset frst^life: STA Hungry_counter ; get count CLC SBC ISick_re£f ;ck if getting sick BCS £ ick_inc ;jump if not sick LDA S i ck_court ter ; cur r ent ;mod F-rels2 ; j CLC SEC ;end mod ;mod testr3a ;-X for each trigger ;jump if not neg ? SBC #siek_dec ; BCS fr#t_aick ~§?v A*9$ reset ; LDA *00 SBC #Sick_dec STA Sick_counter BCC Max_Sref CLC LDA Sick_counter SBC #Kax_sick BCS £ret_sick Max_Sref: LDA *Max_sick frpt_sicki STA Sick_counter JHP Hunger! ;end mod testr3a ;-X for each trigger i ;jump if neg ;get again ;ck if at minimum allowed count ;jump if not at min ;Ffl to min Sideline: INC Sick_counter ;+1 if i E BKE No_sick_ine ;Jmsp if die*-- roll over LDA #FFh ;i£ did the i t to max STA Sick_ counter No_sick^inc: i Hunger1: LDA SicVcounter CLC SBC #RealIy_sick BCC Hunger^ LDA Hungry^counter CLC SBC #Need_f ood ;ck i BCC Decd_Hung_norm Life_normal; HEC ;tell RTS ;done ^ck how sick ;decide if too sick to play ;jump if < ;check how hungry he is getting hungry ;jump if is sensor to do normal routine Hungers: LDA Hungry_counter CLC SBC #sick_rf»£f ;ck BCC D e cd_ _Hung_ sick LDA Hungry_counter CLC SBC #Need_food ;ck BCS D e cd_S i ck_n o nn r »IMP Decd_Hung_sck_ni ;check how hungry he is if very hungry and i sick ;only speak hungr> / sick ;check how hungry he is if getting hungry ; jump if is rm ;do hungry & sick speech Dec d_Hung_ 5 c k_no rm: JSR CLC Random SBC »A 0 h LCS Life^normal LDA Seed_l BHI Say^sick JHP Say^hunger ;need 3-way decision ;hi split ; >A0 = normal senior ;get again ; *80 ; <$Q DecdjHung^norm: A-9f JSR Random ;ge get random 50/50 decision BMI Ufe_nojnnaI ; JMP Say_hunger ; Decd_Sick_no rm: JSR Random :go get random 50/50 decision BMI Li f e_norrtm 1 ; JMP Say_sick Dec4_Hung_sick ? JSE Random ;go get random 50/50 decision BMI Say_hunger jmp Say^fridk ; f Say^hunger: LDA tHunger_split ;get random/sequential split STA XN„DAT ; save for random routine LDX #Seq_hunger ;get how mani sequential selections LDA #Ran_hunger ;get number o; random slet.ions JSR Ran_seq ;go decide random/sequential BCS Hunger_ran ; Random mode when carry SET LDA Sensor_timer ;ck if timed out since last action BED Hung® r_res e t ;yep INC Hungr_count ;if not then next table entry LDA Hungr„count ;get CLC SBC #Seq_hunger-l ; ck if > assignment BCC Hunger„side ;jump if < LDA ItSeq^hunger-l ;dont inc off end STA Hungr^count ; JMP Hunger^side ;da it Hunger__resat; LDA #00 ;reset to 1st entry of sequential STA Hungr_count ; Hunger_side: LDA #GlobaI_time ;get tinier reset value STA Sensor„timer ;reset it LDA Hungr_count ;get current pointer to tables Hunger_ran: JSR Decid_age ;do age calculation for table entry LDX TEMPO ;age offset LDA Hunger_Sl 4 X rget lo byte STA Macro_Lo ;save lo byte of Macro table entry INX LDA Hunger_S1,X ;get hi byte STA Macro_Hi ; save hi byte of Macro table entry JSR Get__macro ;gc start motor/speech JSR Notrdy ?Do / get status for speech and motor CLC ;tells sensor to do nothing RTS Say _b ick : LDA #Sick_split ; get random/sequential split STA IN_DAT ;save for random routine LDX ISeq^flick ;get how many sequential selections LDA t?Ran_sick ;get number of random elections A~97 JSR Ran_seq o decide random/sequential BCS Sick_ra: ;Rar . jode when carry SET LDA 8ensor_tiraer ;ck if timed out since last action BEQ Sick„reset ;yep INC Sickrecount ;if not then next table entry LDA Sickr_oount ;get CLC SBC #Seq_sick-l ; ck if > assignment BCC Sick_side ; jump if < LDA #Seq_sick-l ;dont inc off end STA Sickrecount i JMP Sick„side ;&G it Sick. .reset: LDA SOD ;reset to 1st entry of sequential STA Sickrecount ; Sick^flid©; LDA #Global_time ;get timer reset value STA Sensor_timer ;reset it LDA Sickr__count ;get current pointer to tables Sick. .ran: JSR Decid_age ; do age calculation for table entry LDX ;oge offset LDA Sick_Sl,X ;get lo byte STA Macro_Lo 7 save lo byte of Macro table entry INX i LDA Sick^Sl.X ;get hi byte STA Macro„Hi ;f“ . * hi byte of Macro table entry JSR Get_macrr ;go start motor/sfaech JSR l To w i Ciy ;Do / get status for speech and motor CLC ;tells sensor to d nothing RTS V GoToSleep? ; sa /e light sensor fail or sleep command in “See3_2' into EE PROM LDA Stat_0 ;system AND flDar^sleep^Jorev ; BBC Nodrk_prev ;jump if none LDA #01 ;set *lag that it was done STA "eed_2 ;save in EEPROM JMP G'2 ; Nodrk_pr©v: LDA #< 0 ;set flag that it was cl eai STA f L ^ed„2 ;save in EEPROM Gs2: ; EEPROM WRITE > 4-05 ; Enter with 'TEMPO * holding adrs of 0-63, Areg holds lo byt© and ; Lreg holds hi byte. If carry is clear then it was succesfull, if ; carry is set the write failed* ; MODIFIED eeprom , load lo byte in teinpl and * byte in tentp2 ; and call EEWRIT2, LDA #00 p use DAC output to put TI in reset STA SEX DAC1 * ;tum IRQ Off IDA #00 ;EEPRQM adrs to write data o STA Sgroup ;save adrs LDA #13 ;number of ram adrs to transf* (x/2) STA Which_deloy ; save LDA #00 jXreg offset STA Which_motor ; save ; Need one read cycle before a write to wake up EEPRQM LDX Which_motor ;eeprom address to read from JSR EEREAD ;get data (wakes up eeprom) !Write_loop: bytes) LDA Sgroup STA TEMPO LDX Which_motor LDA Age, X STA TEMPI INC Which_motcr m/. LDA Age, X STA TEMP2 JSR EEWKIT2 BCS EEfail INC Sgroup INC Sgroup INC Which„motor DEC Which_delay BNE IWrite_loop ;get next EEPROM adrs ;buffer ;ram source ;lo byte (data byte #1} ;save data bytes ;hi byte (data byte #2J ;send em ? j ump if bad ;0-63 EEPROM adrs next ;0-63 EEPRQM adrs next ;next adrs ; how many to send ■ t send some more Eeeprom writes 2 GoToSleep_2: Include Sleep*asm mu ;*Interrupt Subroutines mu ;.***** CAUTION ... ; Any ram location written outside of IRQ can only be read in the IRQ, ; likewise if written in the IRQ, then can only be read outside the IRQ, ; THIS WILL PREVENT DATA CQBRRUFTION. NMI; RTI ;Not used IRQ: PHA PHP ;pueh acc on stack ;pUJih qpu status on stack timer A = 1G6 uSEC CkTimerA; LDA Interrupts ;get who did it AND #20H 7 test for timerA BNE Do_ta jjump if is JMP Ck_timerB Dc_ta: .»«*** timer B * 700 uSEC ****** Ck_timerB: LDA Interrupts jget status again AND #1GH ? test for timer B HNE Do_timeB ;jump if request true JMP Xntt_falee ;bypass all if not ; also changed TimerB relaod value from SlQh to 00 in EQ T J Do_ t i meB: j RE-CALIBRATE SWITCH for motor position ; This counter must meet a threshold to decide if the t calpositim f +Ji Lch is really engaged. LDA AND BNE INC BNE LDA STA Cal_noroll: LDA CLC SBC BCC LDA STA Port_C ,*get I/O #Motor_cal ;lo when limit hit No_cal_sw ;no position switch found Cai„switch_cnt ;inc each time found low Cal^noroll ;jump it didnt roll over (stopp*^ #31 jmax count Cal_switch_cnt ; Cai_s witch_cnt ; #30 ;ck if enough counts No_iinustp ;jump if not enough #Cal_pos„£wd ; force value Fot^tim©L2 ;reset both on sv tah) JMP Ut>_linuEtp ;don© No_oal_sw: LDA *00 ;clear count if hi STA Ca l_swi t ch_cn t ; upda te No_lim_stp; LDA BNE LDA STA JMP WTo .! DEC JMP Timer_norrtu ; ********** Below routines run at 2*9 m£ec LDA Mot_speed^cnt ;ck for active BEQ No„apd_m ;jump if not DEC Mo t_spe©d„cnt ; -1 No_spd_m: LDA motorstoped ;motor drift timer BEQ No^mstop ;jump if done DEC motorstoped ;-1 No_mstop: LDA BEQ DEC TimeBl < L1A &&Q DEC TimeB2 3 ;m LDA m BEQ ; m DEC TimeB3: DEC Mili_sec ;-l & allow rollover BNE TimerB_dn ;wait for rollover (2,9mS p 256 * 742mSec) INC Milieec_flag t tell task rtn to decrement timers TiroerB_dn: *********** C ould test all interrupts here as needed ;Ck2Kht: ;CkSOOhz } CkGOhz: ; ********* Check motor position - IK slot in wheel sensor 1 A-lQl Motor_led_timer ; Motor_led timer * 742 mSec TimeBl ;;]uitip if done Motor_led_timer ;-1 Cycle_timer ; 2.9m5ec timer * cycle reload TimeB2 ;jump if done Cycle_timer ;-l Motor_pulse ;2,9mSec timer * Motor^pulse TimeBl ;jump if done Motor, -ml so ;-1 Wait_time WTa #04 Waic^tim© Timer^norm Wait^time TimerB^dn 4 times thru loop * 2*9 mSec >0 counter reset reload bypass timers until done ; This version does two reads to eliminate noise and sets a done flag to ; prevent multiple counts. It also reads twice when no slot is present to ? clear the done flag. LDA Port_C j get I/O AND #Po®_sen ;ck position aenso* BNE Clr_pos jjump if no : ^ger LDA Port_C i get I/O AND # Pos_s©n ; READ 2x to prevent noise trigger BNE Clr_pos ;jump if no IR trigger LDA Slot^vote ;get prev cycle BEQ Pc_donc ;bail if prev counted LDA 4*00 ? STA Slot_vote ;set ram to 0, (faster than setting JMP Force_int ;go count slot oe i LDA Port_€ i get I/O AND flPos^sen ; READ 2x to prevent noise trigger beq Pc_don© ;not 2 equal reads so bypass STA Slot_Vote ;set ram to 1. (faster than setting JMP Pc^done ; bit) a bit) EKtportC: JMP Intt_false ; this should be turned off ; LDA Interrupts ;get status again ; AND tO1H ; test for port C bit 1 rising ; BEQ Pc_done jjump if not Force_inti ; LDA Port_D_Image ; system ; AND #Kotor_led ; ck if position I.FL. led is on i beq Pc_done ; jump if not off LDA Stat_2 ;get system AND #Motor_fwd ;1£ set then FWD else REV BEQ Cnt^rev ;jump if clr INC Pot_timeL2 ;sensor counter CLC LDA Pot_tim©L2 ;current SBC t207 ; tk for > 207 BCC Updt^cnt ; jump if not LDA too ;roll over STA Pot_timeL2 JMP Updt_cnt Cnt_rev: DEC Pot_tim©L2 t-1 CLC LDA *2GB ;max count * 2 pot_timeL2 ;ck for negative ( >207 ) :s Updt_cnt j jump i£ not Cnt_t , LDA 1207 :when neg roll over to max count STA Pot_timeL2 i tJ£dt_cnt j INC Drift_counter i to be used for braking pulse ;to be used for braking pulse LDA Fot_timeL2 jget current count STA Pot^timeL ?save in motor routine counter ; THis routine used to calculate motor speed based on battery voltage, LDA Kot_speed_cnt ;ck for active BEQ Pc_done ;jurqp if not INC Kot_opto_cnt ; Pc^done: LDA Motor_led_timer ;ck if active l>0) BEQ Mot_led_of£ ;jump if done LDA PortJD_Image system ORA #Motor_led ;turn LED on JMF Mot_led_dn ; Mot_led_off: LDA Port_D_Image ;system AND #Nt_Motor_led ;turn LED off Mot_led_dn: STA Port_D_Image ;update motor led M_drft_Fl: LDA Drift_fwd ; g* t delay value BEQ M_drft_Rl ;jump if prev done LDA Dri£t_fwd ;get delay value CMP #01 ;01^turn motors off BEQ M_drft_F2 ;send it DEC ;m32 LDA AND STA ;m32 LDA ORA AND JMP M„dr£t„F2: DEC LDA ORA JMP M_dr£t_jU s LDA BEQ LDA CMP BEQ DEC ;m32 LDA AND STA ;m32 LDA Port^D^Image ;get system ORA #Motor„off ;turn both motors off AND #Mrtor_revs ;tnove motor in rev dir to stm motion Port_D_Image ;get system {note lo is tranys off} #3Fh ; turn both motors off to prevent transistors F rt_D ;on at same time Dri£t_rev ;get delay value Intt_motor ;jump if prev done Drift^rev ;get delay value #01 ;01®turn motors off M_drft^R2 ;send it Drif t_rev i -1 Dri£t_fwd ;-1 Fort_D_Image jget system (note lo is tranys off} #3Fh ;turn both motors off to prevent transistors Port_D ;on at same time Port_D_Image ;get system #Motor_off ;turn both motors off #Mot©r_fwds ; move motor in wd dir to stop motion lot t,jiiotor„end Drift_fwd ;-l Port_D_Image ;get s/stem ttMotor^off ;turn both motors off Intt_motor end A-103 Int t_mot or_end JMP M_dr£t w R2: DEC Drift_rev ;-I LDA Port_D_Image ;get system ORA #Motcr_off ;turn both motors off JM P Int t_i7ic t or _end Intt_motor: IDA Stat_3 AND #C0h ;get motor command bits STA InttJFesnp ;sav motor direction Furbyi: ,. move motor pulse width to interrupt routine LDA BEQ DEC JHP Intmotorlt LDA BEQ DEC LDA STA JMP Intmotor2: LDA STA LDA STA Intmotor_dn Motor_pulsel t get on time Intmotorl ;jump if 0 Motor^jpu 1 sel ; -1 Intmotor^dn ;exit i&cnt change Intt_j:emp if on} Motor_pulse2 ;get off time Intmotor2 ;got reset timer Motor_pulse2 ;-1 #CGh ; shut motor off Int t__Temp ; Intiivotor_dn ;exit Mon_Ien ; reset on time Motor_pulsel ; Moff_len preset off time Motor_pulse2 ; . end motor pulse width LDA Port_JD_Image ; get system AND #3Fh ;olear motor direction bits CLC ADC Intt_Ternp ;put in motor commands Intt_ ii motor_end: STA Port rt D_Imag© ;update system i at Tracker EOR #%1100000G ;;Tracker add invert motor drivers ? end Tracker STA Port_D ;output Int t_done: ;g^ ral turn LDA Stat_3 ;syat* ORA ilRQ^dn tern IRQ occured STA Stat_3 i up iat Intt^false: LDA #00H ;clear ail intts first STA Interrupts # LDA #Intt_df1t ;get default for interrupt reg STA Interrupts ;set reg & clear intt flag ?LP ;recover CPU A-104 FLA ;recover ACC RTI ;reset interrupt ;*************+******..*•***•*********.*****+*******+.********.** ; Communication protocol with the TI is: FF is a no action command, (used as end of speech command) ; FE sets the command data mode and the TI expects two ; additional data bytes to complete the string. (3 TOTAL) i ALL OTHERS 10-FD! ARE CONSIDERED START OF A SPEECH WC J3 i ; Command data structure is BYTE X + BYTE 2 + BYTE 3 ; BYTE 1 is always TE ; Command 1 t BYTE 2 = FE is pitch table control; ; BYTE 3 = bit 7 set = subtract value from current course value ; clr = add value to current course value ; bit 6 set = select music pitch table ; clr “ select normal speech pitch table ; bit 0-5 value to change course value mo change = Oi t ; Ccera&and 2 ; BYTE 2 = FD is Infrared transmit cmnd ; BYTE 3 = Is the I,R, code to send { 0 - QFh only ) 4 i Command 3 BYTE 2 = FC is the speech speed control ; BYTE 3 » a value of 0 - 255 where 2Eh is normal speed. , Enter subroutine with TEMPI - command byte (1st) ; TEMP2 * data byte (2nd| Xmit„TI: LDA ttFEh ;Cells TI coita JSR £pt-h__mare ;out data LDA TEMPI ;command code JSR Spch_more ;out data LDA TFMP2 ;data to send JSR Spch„more ;out data RTS ; done ; There is an entry for each bank of speech and only the words in tb* ; bank are in the list. This is a subroutine call. ? The first time thru, we call SAY„x and as long as WORD_ACTIV or SAY_ACTIV ; is set we call DO_NEXTSFNT until saysent is done, i There are 4 groups of 128 pointers in ea h group. This gives 512 saysents, ; 1. Enter with 'Which_word' holding 0-12^ and ’Sgroup 1 for the 1 of 4 tables ; which points to two byte adrs of a saysent, These two bytes are ; loaded into Saysent^lo fc Says«nt_hi- ; 2. Datv- s shuffled to the TI according to the BUSY/REQ line ; Currently we have 167 speech words or sounds in ROM. Words 1-12 i are in bank 0 ad 13 - 122 are in bank 1 4 123 - 167 in bank 2. 5ay_0 i LDA CMP BEG CMP BEG CMP BEQ Dec_sayl; LDA STA INX LDA STA jwr Dec_say2: LDA STA INX LDA STA JMP Dec_say3: LDA STA INX LDA STA JKP Dec_say4: LDA STA INX LDA STA Dec„say5: LDX LDA STA LDA STA JSR INC BNE INC ord jroup #03 Dec_say4 #02 Dec_say3 #01 Dec_say2 Spch_grpl,X Saysent_lo Spch_grpl,X Saysent^hi Dec__say5 ;get offsett ;load offset to Xreg jget current ;is it table group 4 ;jU3ip if is ;is it table group 3 ; jusnp if is ;is it table group 2 ; juinp if is ;default group 1 ;get lo pointer ; save ; X+1 p-gp't hi pointer ; save ;go calc word Spch_grp2,X ;get lo pointer Sayaent_lc ;save ; X+1 Spch_grp2,X ;get hi pointer Saysent_hi ;save Dec_eay5 ;go calc word 5pch_grp3,X ;get lo pointer Saysent^lo ;save ; X+1 Spch_grp3,X ;get hi pointer Saysentjhi \save Dec_say5 ;go calc word Spch_grp4,X ;get lo pointer Say s entile ;save ; X+1 Spch_grp4 J X ;get hi pointer S ay s en t_hi ;save #00 ;no offset l tSaysent_lo,X) ;get data & K bit adrs TEMP2 ;save new speech speed #FCh jcommand for TI to except speed data TEMPI ; Xnut_TI ;s«md it to TI Saysent_lo ;n*xt saysent pointer Xney^say if no roll over Saysent^hi ; +1 A-I06 Xnay^sayi LDX #00 ;no oEfaett LDA (Saysent_lo,Xi ;get data 0 16 b:t adrs CLC ADC Rvoice ;adjut to voice selected on power up STA TEMP2 ;save new speech pitch LDA #FEh ;coiratiand for TI to except pitch data STA TEMPI ; The math routine converts the value to 00 for 80 and ; if ^0 then subtracts from 80 to get the minu^ ver ’ n of 00 ; ie> if number is 70 then TI gets sent 10 (-1 LDA TEMP2 ;get voice with offsett BKI No_voice_chg ?i£ >80 then no char LDA # BOh ;remove offsett if <80 CLC SBC TEMP2 ; k i 11 offset STA TEMP2 ;update No_voice_chg: JS.R Xmi t_TI ;send it to TI Do_nextsent Frst_say: INC Saysent_lo ;Hext saysent pointer ENE Scnd_say ?jump if no roll over INC Saysent^hi ;+l Scnd_say: LDX #00 jno off sett LDA ( Saysent_lo, X) ; gat data @ 16 bit adrs CM" 1 #FFK ;check for end beq Say_end ; done LDA (Saysent_lo,XJ ;get data 0 16 bit adrs STA Which„word Wtest: CLC SBC *12 ;ck if in bank 1 BCS Get^groupl ;j ump if is Get_groupO : LDA #00 ; set bonk STA Bank_ptr ; Bank number CLC ; clear carry LDA Whiohword p get word ROL A ; 2 ' s offsett TAX ;load offset to Xreg LDA Word_group0,X j ge t lo pointer STA Word_lo ; save INX ;X+1 LDA Word_group0 ( x ;get hi pointer STA word_hi ; save JMP Word_fini ;go do it Get^grouplr LDA which„word ;selection CLC SBC #122 ;ck if in bank 2 BCS Get_group2 ;jump if is LDA #01 ; set bank STA Bank _ptr 7 Bank number CLC LDA Which^word word SBC * 12 ;lst 12 in wnrd^groupO CLC ROL A h 2 ' s offsett TAX ;load offset to Xr^g LDA Word_groupl,X ;get lo pointer STA Word_lo ; save INX 7X+1 LDA Word_groupl,X ;get hi pointer STA Word hi ; save JMP War ini roup2: LDA #02 ; set bank STA Bank_p^r ;Bank number CLC ;clear carry LDA Which_word a11 ery /wake up information ;junrp to power up initial if not port D ; Need to debounce tilt and invert since they are very unstable Ck_wakeup: LDA #00 /clear STA TEMPI I STA TEMP 2 f LDX #FFh ;loop counter Dbn c_l p: LDA Porc^D AND #01 ; ck tilt SW BEQ Dbnc_lp2 ;jump if not tilt INC TEMPI ;switch counter Dbnc_lp2 J LDA Port_D AND #02 /ck invert sw BEQ Dbnc_lp3 /jump if not invert INC TIKP2 /switch counter Dbnc_lp3: DEX ;-1 loop court BNE Dbnc_lp ; loop LDA Deep sleep /decide if normal or deep sleep CM. #llh 7 BEQ Dtonc_lp4 iit deep sleep then only test invert LDA TEMPI /get tilt count BEQ Dbnc_lp4 /jump if 0 CLC SBC f * /min count to insure not noise BCS Power_Port_D /junqp if > min Page 1 A-109 Wake2.asm Dbnc_lp4; LDA T0fF2 ;get invert count BEG Dfcne_lp5 ;junp if 0 CLC SBC #10 ;mln count to injure not noise BCS Power_Port_D ;junp if > isdn Dbnt^lpS s /Verify that FartJ) is no longer changing before going to Bleep. tit not, the CRT will lock up without setting the low power rode. t Be fore we exit here when count is less than minimum count, we mast /be sure FortJ3 is not changing. If we jump to sleep routine when /it 10 not stable, the sleep routine will wait forever to be stable /which causes Furby appear to be locked up. LDA #00 1 3TA TEMPI ; counter LDA Fort J3 /get current status Test_sleep: CUP Port JO /check if changed bhe Ck^wakeup t start over if did DEC TEMPI ; -1 counter BHE Test_sleep / loop S&9 OoTa5leep_2 /otherwise, iust goto sleep again FcwerJ?ort_D: LDA #llh /signal port D wakeup * ETA Wanrucold JMP L_PowerOn 1 nitia1 Power_bat tery : LDA #05h /signal battery wakeup STA Wam\^c=ild : L_PowerOnInit ial t im #00 i clear deep sleep cosrtnand STA Eeop__s 1 eep t Page 2 AMO Lights.asm n HODS : ; LIGHTS,asm ; Add test to light counter so that if the oscillator j fails, the system will ignore light sensor and keep running, 1 ; Light4 ; When goes to conpiete dark and hits the 'QarJ^sleep* level ; and stays there until the reft level updates, at that point t we send Furby to sleep, I ; Lights (used in F-REL52 ) ; Change detection of light threshold to prever : false or continue_s trigger. t Bright EQU 15 flight sensor trigger > re tt level (Hon) Dim EQU IS ;Light sensor trigger < reff level (Hon) £hift_reff EQU 10 fsrax count to set or clear prev done flag Bark_sleep EQU BOh fWhen timer A hi *G£ and timer A low f is * to this EQU then send him to sleep ; The CDS light sensor generates a square wave of SOQhz to 24khz based on t light brightness. We can loop on the sense line and count time for the ; lo period to determine if light has chained and conpire it to previous / samples. This also determines going lighter or darker. W. also set a timer ; eo that if someone holds their hand over the sensor and we announce it, ; if the change lent stable for 10 second, we ignore the change back to the ; previour state. If it does exit tor > 10 seconds, then it becomes the ; new sarple to compare against on the next cycle. ; In order to announce light change, the system must have a consistent ; count > *Shr ft^r*£ f 1 . t If a previous rerf has been set then the 'Up^light' bit is set to ; look for counts greater than the raff. The system passes through the i light routine 1 Shift^reft' times. If it is consistently greater than 1 the reff level, we get a speech trigger If any single pass is less ; than the reff, the counter is set back to zero. This scenario also * is obeyed when the trigger goes away, ie remove your hand, and the system i counts down to zero 1 Ujflight * bit is cleared ) If during this time any ; trigger greater than reff occurs, the count is set back to max, ; This should prevent false triggers. Get^light; ;alt entry for diagnostics i This vsses timer A tc get a count from the lo period of the elk SEI LDA #0C0H STA Interrupts LDA IOOOH STA mA„CON .interrupts off ;disable timer, clock, ext ints, ; & watchdog; select IRQ int* ;set timer A for timer mode Page 1 /■ui LightS.asm LDA fOOOK /re-start timer A STA TKA_LSB 1 LDA tOOOH ;now CFUCLK; was #GlGH * CFUCLK/4 fHon} STA TKA tf SB J Ck_lght2 s LDA 'IMAJISB ;test tox dead light ose AND #0Fh j get timer CKF #0Fh ;ck *or > OE BNE Ck_lt2a /juiqp if not LDA TMA_LSB /get lo byte CLC SBC #EOh /ck for > l insb+lab =QF£0) BCC Ck„lt2a if not JKP Light_£ail /bail out if > Ck_lt2a ; LDA Fort_J> ;get I/O AND # Lighten ;ck light elk is hi BEQ Ck„lght2 /wait for it to go hi LDA iOOOH /redstart timer A STA TKA„LSB r LDA in OH mow CFUCLK/ was #010H * CFUCLK/4 {Hon) STA I Ck_lght3i LDA TMA_MSB meet for dead light osc AN fOFh ;get timer CLP #0Fh /ck for > OE HNE Ck_lt3a ;jurrp if not LDA THA^LSB /get lo byte CLC SBC #E0h /ck for > (ntsb+lsb ®GFEQ) BCS Light_feil /bail out if > Ck_lt3a: LDA PortJS ;get I/O AND #Light_in ,ck light elk is lo BNE Ck_Ight3 /wait for it to go 1c to insure the elk Ck_lght4 i LDA #000H /re-start timer A TA TKA„LSh i LDA #OOOH mow CPUCLXwas #01 OK - CFUCLK/4 then) STA TMA_KSB * Ck_lght4a: LDA Port_D I get I/O AND # Lighten /ck if still lo BEQ Ck_lght4a /loop till hi j Timer A holds count for lo period of elk Lght4otfn LDA TMA.J3SB /get timer high byte AND #00 FH j mask out high nybble STA TEHP2 ; and save it LDA TMA^LSB ;get timer low byte STA TEMPI ; and save it LDA TKAJtSB /get timer A high Vyte 'fain Page 2 A-m LIght5 4 asm AND #Q0FH : mask out high nybble CMP TEMP2 t and compare it with last reading BNE Lght4cnp f loop until they're ~rual f take 12 bit tinier (2 byteaJ and move to one byte and trash lo nible f of low byte. End up with hi 8 bits out of 12 - LDX *04 j loop counter Light_byt*» ROR TEMF2 (get lo bit into carry ROR TEHPl (shuffle down and get carry from TEMP2 DEX i-l BNE Light _byte f loop till done Ck_lght4b; 1 LDA #Intt_dfIt t Initialise timers, etc. STA Interrupts (re-establish normal system CLI ^re-enable interrupt JSR Kicking /wait tor motor ft/C to start working again CLC (dear i - rvow have new cour> in ■ TB1F1 h LDA Light_ref t ; get previous sanple SBC TEMPI ;ck against current sample BCC Ck_lght5 ijunp if negative CLC SBC ((Bright ;ck if difference > reff BCS Lght_brt j go do speech JMP Kill_ltr£ jbail out tf not Ck_lght5 i CLC LDA TEMPI ;try the reverse subtraction SBC Light reft rprev BCC ? quit if negative CLC SBC #Dim ( is di££ < reff BCC Kill Itrf (bail out if not Ujht_dims LDA Stat_3 (system AND #Nt_lght_stat (dear ‘ ’t to indicate d^rk table STA Stot_3 (update system JMP Do_lght ;go fini Lght_brt* LDA Stat_3 1 system ORA #Lght„stat /set bit to indicate light table STA Stat_3 ;update system JMP Do_lght I Light_£ailj LDA fFFh (force lo number so no conflicts STA TEMPI LDA #Intt_d£it /Initialise timers, etc. STA Interrupts (re-establish normal s$ tem CLI /re-enable interrupt J£R Xick_IRg (wait for mrtor R/C to start working again JMP Kill_shift /ret with no r&q t -—- Do_lght: Page 3 A-113 Lights • asm LDA Stat^l AND •flight BNE Rat„«hftup LDA #5hi£t_re££ STA Light_shiffc JKF No_lt_todo Rst„shftupr INC Light_shi£t LDA Light_shift CLC SBC •Shift^reff BOC No_lt_todo LDA lShift_ref£ STA Lightishift LDA Stated AND #Ltjprev^dn BNE New^ltreff LDA Stat_0 ORA #Lt_prev_dn STA Stat_0 t LDA StatJL t AND #EFh r STA Stac_l LDA #Light_reload STA Light_tiraer JMP Do_ltchg ; aye t can >ek if incnnnt mode ;junp i£ incrrmt inode /set to max ; * ;+l rget counter rck if > max reff count fjunp if c max count ;reset to max ;system fcheck if previously done t jump if was ;System /set previously done t update ; system ?set sytem to shift decrmnt mode ; u* ’ate ;reset for next trigger ;set it jgo announce it Haw^ltref£: LDA BKE LDA STA Light_timor Wo_lt_todo TEMPI Light„ref i /get current ?nothing to do ;get new count j update system :da Stst_l AND #EFh 3TA Stat^l i system /set sytem to shift decrmnt mode #update LDA CLC TEMPI /get current value SBC ♦Darkle leep jck if > Bleep level BCS Ck^drk /jump if > LDA Stat 0 t system AND #7Fh /kill prev done STA Stat_0 ;update JMP Kill_ltrf f Ck_drk; LDA Static ;system ALB #D rk_sleep_prev ?ck if this was already done BNE Kiil_ltr£ ; jutrqp if was RH LDA ORA ORA STA KiU^ltrf* Stat_Q ;system #KEQ_dark_sle©p j»et it #Dark_sleep*-prev /set also Stat_0 iupdate A-114 ; LDA Stat_G ; system ; and #Lt_prev_dn ;check if previously done i BEQ NoJLt^ odo ;jun$> if clear LDA Light_shift ;g*t shift counter BEQ Kill.shift ;jurrp if vent rero last time LDA StAt_l ;system AND #up_iight ;ck if incrimt node BEQ Rst_shftdn /jump if decrimt mode LDA #00 ;set to min STA Light_shift I JHP No_lt_todo ; Rst_shf tdni DEC Light_shift r-1 JKP No_lt_todo /done Kill^ahitci LDA Stat_0 t system AND #FDh ; clears Lt_prev_dn STA St«t_0 ;update LDA Stat_l i system ORA #Up_light /prepare to incrmnt 'Light_Bhift T STA Stat^l /update No_lt_todo i SEC ;carry set indicates no light change RTS ;;;;;; r ; 7 r;;;;;;;;; rr 7;;;?;;;; 111 ;;;; ;*“**"* 3 i eirt system to start speech Do_ltchg: LDA Stat_3 f system AND fLght_stat ;ck if vent light or dark BNE LT_re£^brt /went brighter if set LDA Stat_4 /get system ORA #t>o_l ght_dim ;set indicating change < reff level JMP Ltre£_egg 1 LT„ref_brt: LDA Stat_4 ; ORA #Do_lght_brt /set indicating change > reft level Ltraf_egg: STA Stat_4 /update egg info CLC RTS /carry clear indicates /done light > reff Diag7.asm ■ t 'Diagnostic© and calibration Boutin* * ; j Hod* to the diagnostic routines : t DIAQ6 : i Init memory,voice,name and write EEPJRGtf before exiting, ; Diag7: j HEprom rrvamory test, reads and writes all locations. ; On power up if port D woke us, then bypass diagnostics. ,##********»******«*»*********+***. j refer to self test mode documentation t Diagnostic £QU*s Dwait_tilt EQU 02 ;£ull test waiting for no tilt (step l) Diagnostic: t All speech / nctor calls us* standard macro routines, except we ; fores the macro directly. Be careful! to load the *MACBO„LO* and t 1 MACRO^HI' bytes properly. We use a comnon subroutine to set the macro ; eo t ^4ACJ^ L 0_^lI , is loaded only once in the subroutine. Be sure the macros t are in the same 128 byte block. Initially chose adrs 400 (190} for these s diags. LEA Warr^cold jget startup condition CKP *llh ;ck for port D wakeup BEQ No_Diag ;jump if not LDX #FFh ;loop counter DportD_tst: LDA Port_D ;get I/O AND #03 t ck for tilt and invert BNE DEX No_Diag ;1£ either hi then bail out t -1 BNE DportD„tat ;loop till done (ckg for Port D bounce) LDA Fort_C ;get I/O AND #0Ch ;ck for front and back switches made BEG Diagl 7 if both not lo then bail out else start diag No,J3iag ? JMP Diagl* Test_byp 7 no diagnostic request j Start teat force voice to ncmal condition while diag is active LDA #9 it Tracker add for constant diag STA Rvoice t ;Tracker add LDA #0 ;hi beep for start of test JSP wait for front Diag_macro & back to clear ; go send motor/speech LDA Port^C ;gat 1/0 Page 1 A-1I6 Diag7 ,«om AND #OCh ;get keys CMP #OCh ;imat be both hi Bm Diagl jwait till are New_top: LDA #03 ;eet delay for switch bounce JSR half_delay ;x * delay Diag2a; ;press front key & go to EEPROM test LDA Port_C jget I/O AND #Touch_Emt ;wait for switch BME Diag2b ;go ck if next test is requesting LDA #01 ;hi beep for start of test JSR Diag_jtoacro ;go send motor/speech DiagSali LDA Fort„C AND #Touch_£mt BEQ Diag2al f EEPROM WRITE / init vajn a© 1 ,2,3,4,5, to 26 LDA #01H ; data for fill LDX #Age t start at ram location RAMset: STA 00, X ; baa© 00, offset x CLC ADC #01 fine Acc INX ; next ram location CPX #Age+26 t check for end BNE RAMset ; branch, not finished ; fill done JSR DoJEE_wri,te ;write the EEPROM JSR S ~EPRQM_REAE ' ;read data to ram LDA #00 j clear STA Task_ptr r LDX #Age ; start at ram location RAMteet 3 LDA oo.x ; base QG, offset x CLC ; ADC Taek_ptr ;running CRC STA Tssk„ptr j running total im ; next ram location CPX #Age+26 j check for end EKE RAMtest ; branch, not finished LDA Taskjjfcr ,-get result CMP #SFh rmatching CRC (actual total is iSFh ) BNE EEfall ; j urep i £ bad EEpase: LDA #02 rbcep to signal good test STA Feed_count ;use as temp storage JMP EEdo n c ; serai sounds EEfaili LDA #03 ,-beep indicates failure STA Feed^count ftenqp storage EEdone; Page 2 A-U? Diag7 * asm CLI ;enable IRQ J SR Klck_IRQ ;wait for timer; *~sync JSR TI_reset /clear TI fr reff level STA Stat_4 /update system JSR /go get light level sanple LDA TEMPI /get new count STA Light_ref£ /update system Diagt 7a: JSR Get_light /go get again and test for lower level LDA Stat_4 /get system AND #Do_lght_dim check if went dirmier BEQ DiagF7a /loop if no change LDA #0 ,-pass beep and motor motion JSR Diag„macro /send it i DiagFd; /Sound sensor test LDA #00 /clear sound timer to force new reff cycle STA Sound„timer r set LDA Stat^l /get system again QRA #Snd_ref£ /make this pass a new sound reff Page 7 A~n+ Ding !.asm STA Stat_l ./update as r Get^sound igo get light level, establish 1st level LDA 5tat_4 i mo #tft_do_snd ; clear indicating change > reff lervel STA Stet_4 /update system DiagFSai JSR Get_ecund ?go get again and test for lower level LDA Stat_4 ?get system MtJ #Do_snd /check if went louder BEQ DiagFSa /loop if no change LDA #9 /pass beep and motor motion JSR Diag_jnacro ;send it J DiagF9; /wait for I.R. data received LDX #10 ?/Tracker change, orginal is 100 DiagF&al: LDA tl JSR Half^delay DEX sm DiagF9al JSR D_IR_test /go ck for data BCC DiagF9 ti loop until data receive CMP #A5H /is it the expected data BNZ DiagFSa /juitp if wrong data LDA #1 /pass beep and motor motion JSR DiasLjnacrt /send it JMP DiagFlO ; done DiagFSa: LDA #3 /fail beep and motor motion JSR Diagjraacro /send it DiagFlO; /all teste complete, send to sleep mode LDA #10 ; JSR Half_delay LDA #10 ;put furby in sleep postion JSR Diag_macro /send it / Clear RAM to 00H ; we dont clear ■ Seed_l or Seed, J2 since they are randomized at startup. ; LDA IOOH / data for fill LDX #D7h ; start at ram location Clear s STA 00, X ; base 00, offset x DEX / next ram location CPX #7FH / check for end BNE Cl ear j branch, not finished ; Random voice selection here LDA ffiOh /get random/sequential split Page 8 A-123 D-ag7. asm sta IN_DAT ; save to r random routine LDX #00 *make sure only gives random LDA #10h ;get number of random selections JSK Ran^seq jgo get random selection TAX LDA Voice_table,X /get new voice STA Rvoice /set new voice fcitch On power up or reset. Furby mist go select a new name # ,, ahw how cute. jm Random t AND f lFh t get 22 possilLe STA Narne ;set new name oointer LDA #FFh ; insure not hungry or sick STA ' r 'ing ry_count e r /max not hungry STA _cK_crunter ; Max not sick Clear training or all sensors LDA #00 STA ^p„ID STA Temp_ID2 STA Tilt_learned STA Til^lm^cnt STA Feed_l earned STA Feed_l m_cnt STA Light„leamed STA Ligbt_lm_cnt STA Dark_Learned STA Dark_lm„cnt STA Front_ learned STA Frontal m_ent STA Sound__l ea m ed STA Sound^lm_ent STA Whke_lea med STA Wake_.lm_.cnt STA tnve x t_l ea rued STA I rLver t_ 1 cn t JMP OoToSleep /write ee memory YO 1 Page 9 A-124 ; Furby27,inc ;; change twinkle egg song to one pass in macro Lowered voice+10,voice+9 to voice+8 Wayne's mode: Furby5b,ine = add voice selection table Dave’s added feed (mouth open) 170 * 171,173,174,175,182,183,190.191 ( 194 rood f oa ir NOW 24 NAMES ;TABLES MACRO |SAY ; FRONT 2-64 I 1-61 ; FORTUNE 65-83 62-78 jo-too-mah 84 ; HANGOUT 85-101 79-106 ;delay 102 ; FEED 103-145 108-123 ; WAKE 146-169 124-156 ; HUTJGEF 170-201 157-168 * INVERT 202-238 169-192 ; BACK 239-275 193-236 iSICK 276-292 237-250 ;LIGHT 293-307 251-265 ;DARK 308-331 266-289 ;SOUND 332-351 290-309 ; TILT 352-392 310-350 / IK 393-429 351-390 ;FURBY SAYS 430-434 50 TICKLE.196 PET, 71 SOUND,391 LIGHT,19B 435, 436 392 NO LIGHT, 393 LOUD SOUND 437„438 ! 115,116 # hide and seek sounds 95,96,97 98,99,100 ; hide and seek reuse 439 ; i.irby says win sound /Diagnostic 440-450 400-410 i 451,452 117,118 J hide and seek rounds l Names 453 399,395,110 1 me koko (more) 454 399,395,396 ; me meme (very) 455 399,395,112 i me e-day (good1 456 399,395,397 l me do-mob (please) 457 39 ,395,114 t me toh-dye (done) 458 399,395,117 1 roe boo (nol 459 399,395,398 i roe toh-loo (1 i:. e) 460 399,3^5,120 § roe ay-tay (hungry) 399 1 delay 1.3 secondn 461 399,395,131 § me way-1oh (s1eep) 462 399,395,143 J me u-tye (up) 463 399 , 395,145 1 me ay-loh (light) 464 399,395,152 J me kah (me) ; 465 399,395,166 J me dah (big) # 466 399,395,175 ■ * roe boh-bay (worry) t 467 399,395,177 t roe nah-bah (down} ; NEW EASTER EGGS « 1 468 f DGDLE DO, ME LOVE YOU 4 1 469 ; l SING A SONG * 470 i r BURB ATTACK l 471 f furby says win sound i 472 | 46 furby says lose sound MORE NAMES not used 473 474 475 53,123 394 411 412 ; me done (leaving any game) ; LISTEN ME ; HIDE ME (hide and seek) ; aaah,*aah,«aah feed dmh 47 6 399,395,186 477 399,395,194 478 399,395,201 479 399,^95,208 480 399,315,224 481 399,3-5,226 482 39S , 39:' , 398,152 483 399,395;,152,166 484 399,395,224,152 me loo-loo (joke) me ah-may (pet) me nao- 1oo (happy} me may-may (love) me may-1ah (hug) me dah-noh-lah (big dance} me toh-loo-ka (like me) me ka*da (roe big) me roay-lah-ka (hug me) 476-511 |413-S1G ; TRAP follow macros for name ; SENSOR i HANGOUT 97 ; WAKE-UP 149 ; BACK 248 ; LIGHT BRIGHT 305 I IR 393,404,414,421 ; GAMES j FORTUNE 69 ,77 j HIDE AND SEEK 475 ; FURBi SAYS 474 ; end trap macros for name reused ; reused ; reused ; reused 72,380 j 15 15 395 DANCE 407,416 367,376 reused ; furby says win sounds l LAUGH ; me {for use with names) ; reused for dance easter egg not used 1396-399 ; Sensor tables ; Each sensor has 4 speech/motor tables based on age 1-4, of 16 entries each. ; These tables nre 16 bit entries, the user enters as a decimal 1-511 , *.** « 0{r ia in e g a i **** i This number calls the MACRO tables to get specific speech and motor i tables* MACRO tables chain together multiple motor and speech tables* ; The first 8 entries of speech is random selections and ; the second 8 entries is sequential* one of three voice pitci* selections, randomly load table and table is randomly called on power up to select a new voice, THis gives a number added to voice 3 to create which voice will be A127 used. Voice_table: DB S_voicel DB S_voice2 DB S_voice3 DB S_ sicel DB S_Voice2 DB S_VOice3 DB S_vaicel DB S_voice2 DB S_voic©3 DB B_Voicel DB S_voice2 DB S_vcice3 DB S_voicel DB S_voice2 DB S_vaice3 DB S_voicel ;Ba 11 tilt sensor table ;DO TILT Ti 1 t_Sl; E?W 352 #1 AGE 1 DW 353 ; #2 AGE 1 DW 354 #3 AGE 1 DW 352 #4 AGE 'l m 355 *15 AGE 1 DW 356 AGE 1 dw 357 #7 AGE 1 DW 356 tts AGE 1 c 359 AGE 1 DW 360 #10 AGE 1 DW 361 #11 AGE 1 DW 362 **12 AGE 1 DW 363 #13 AGE 1 DW 352 #14 AGE 1 DVf 364 #15 AGE 1 DW 365 #16 AGE 1 Tilt_S2; dw 366 *1 AGE 2 DW 3 67 #2 AGE 2 DW 366 #3 AGE 2 DW 355 #4 AGE 2 DW 368 #5 AGE 2 DW 357 16 AGE 2 DW 369 #7 AGE 2 DW 370 #8 AGE 2 DW 359 #9 AGE 2 DW 360 #10 AGE 2 DW 371 #11 AGE 2 DW 372 #12 AGE 2 DW 373 #13 AGE 2 DW 374 #14 AGE 2 DW ^55 #15 AGE 2 DW 37^ #16 AGE 2 Tllt_S3i DW 36< ; #1 AGE 3 DW 355 ; #2 AGE 3 A-128 Tilt_S4: Sick Si: Sick_S2 t DW 376 ; f3 AGE 3 DW 377 ; #4 AGE 3 DW 378 ; #5 AGE 3 DW 379 ; #6 AGE 3 DW ieo ; *7 AGE 3 m 381 ; #8 AGE 3 DW 382 ; #9 AGE 3 DW 383 ; ft 10 AGE 3 DW 384 ; #11 AGE 3 DW 385 ; #12 AGE 3 DW 365 r #13 AGE 3 DW 375 ; #14 AGE 3 m 363 ; #15 AGE 3 DW 386 f #16 AGE 3 DW 366 ? #1 AGE 4 DW 355 i #2 AGE 4 DW 337 ; #3 AGE 4 DW 377 ; #4 AGE 4 DW 388 ; #5 AGE 4 DW 389 ; #6 AGE 4 DW 380 ; #7 AGE 4 DW 381 ; #8 AGE 4 DW 382 ; #9 AGE 4 DW 383 ; #10 AGE 4 DW 390 ; #11 AGE 4 DW 385 i #12 AGE 4 DW 391 7 #13 AGE 4 m 375 t #14 AGE 4 DW 384 ; #15 AGE 4 DW 392 ; #16 AGE 4 DW 276 ; #1 AGE 1 DW 280 ; #2 AGE 1 DW 283 ; #3 AGE 1 DW 286 ; #4 AGE 1 DW 2 88 ; #5 AGE 1 DW 1 288 ; #6 AGE 1 DW 289 ; #7 AGE 1 DW 290 ; #8 AGE 1 DW 291 ; i 9 AGE 1 DW 292 ; #10 AGE 1 DW 288 ; #11 AGE 1 DW 288 ; #12 AGL 1 DW 289 ; #13 AGE 1 DW 290 ; #14 AGE 1 DW 291 ; #15 AGE 1 DW 292 ; #16 AGE 1 DW 277 ; #1 AGE 2 DW 280 ; #2 AGE 2 DW 284 i #3 AGE 2 DW 286 j #4 AGE 2 DW 288 I #5 AGE 2 DW 288 ; #6 AGE 2 DW 289 ; #7 AGE 2 DW 290 ; #8 AGE 2 A-m DW 291 ; #9 AGE 2 DW 292 ; #10 AGE 2 DW 288 ; #11 AGE 2 DW 283 ; #12 AGE 2 dw 289 ; #13 AGE 2 DW 290 S #14 AGE 2 DW 291 ; #15 AGE DW 292 7 #16 AG* 2 Sick_S3: DW 276 #1 AGE 3 DW 281 #2 AGE 3 dw 285 # 3 AGE 3 DW 287 #4 AGE 3 DW 288 #5 AGE 3 DW 288 #6 AGE 3 DW 289 #7 AGE 3 DW 290 #8 AGE 3 DW 291 #9 AGE 3 dw 292 #10 AGE 3 DW 283 #11 AGE 3 DW 288 #12 AGE 3 DW 289 #13 AGE 3 DW 290 #14 AGE 3 DW 291 ■ #15 AGE -3 DW 292 : #16 AGE 3 Sick__S4: DW 279 DW 232 DW 285 DW 287 DW 238 DW 238 DW 2 89 DW 290 DW 291 DW 292 DW 283 DW 233 DW 239 DW 290 DW 291 DW 292 ; SWITCH FOR DO SOUND) jg DW 332 #1 AGE 1 m 333 ; #2 AGE 1 DW 334 #3 AGE 1 DW 335 i #4 AGE 1 DW 336 #5 AGE 1 DW 337 ■ #6 AGE 1 DW 338 j #7 AGE 1 DW 339 j #8 AGE 1 DW 332 j #9 AGE 1 DW 333 j #10 AGE 1 DW 334 j #11 AGE 1 ; #1 AGE 4 ; #2 AGE 4 i #3 AGE 4 ; # 4 AGE 4 ; #5 AGE 4 7 #6 AGE 4 ; #7 AGE 4 ; #6 AGE 4 ; #9 AGE 4 1 ttlO AGE 4 ; #11 AGE 4 7 #12 AGE 4 ; #13 AGE 4 ; #14 AGE 4 ; #15 AGE 4 ; #16 AGE 4 DW 335 #12 AGE m 336 #13 AGE DW 337 #14 AGE DW 338 #15 AGE DW 339 #16 AGE Sound^S2 : DW 332 #1 AGE DW 333 #2 AGE DW 340 #3 AGE DW 341 #4 AGE DW 342 ti 5 AGE DW 337 #6 AGE DW 343 #7 AGE DW 344 #8 AGE DW 332 #9 AGE DW 333 #10 AGE DW 340 #11 AGE DW 341 U2 AGE DW 342 #13 AGE dw 337 #14 AGE DW 3 43 #15 AGE DW 344 #16 AGE Sound_s3 v DW 332 #1 AGE DW 333 #2 AGE DW 345 # 3 AGE DW 346 #4 AGE DW 342 #5 AGE DW 337 #6 AGE DW 347 #7 AGE DW 339 tie AGE DW 332 #9 AGE DW 333 #10 AGE DW 34 5 #11 AGE DW 346 #12 AGE DM 342 #13 AGE DW 337 : #14 AGE DW 347 ■ #15 AGE DW 3 33 ■ #16 AGE Sound_S4: dw 346 #1 AGE DW 333 #2 AGE DW 349 #3 AGE DW 3 46 #4 AGE DW 342 #5 AGE DW 350 #6 AGE DW 347 #7 AGE dw 351 #8 AGE DW 348 AGE DW 3 33 #1G AGE DW 349 #11 AGE DW 346 #12 AGE DW 342 #13 AGE DW 350 #14 AGE DW 347 #15 AGE DW 351 #16 AGE 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 t 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4-J3i DO HUNGER Hunger. Hunge r. Hunger, Hunger, DW 170 ; #1 AGE DW 1"3 #2 AGE DW 176 #3 AGE DW 18G #4 AGE DW 162 #5 AGE DW 173 #6 AGE DW 165 #7 AGE DW 169 #8 AGE DW 193 #9 AGE DW 194 #10 AGE DW 173 dll AGE DW 195 dir AGE DW 189 #13 AGE DW 193 * 2 4 AGE DW 194 #15 AOF DW 199 #16 AGE DW 171 hi AGE EM 174 d2 AGE m 177 43 AGE DW 181 44 AGE DW 163 #5 AGE DW 174 #6 AGE DW 166 #7 AGE DW 190 #8 AGE DW 193 ; *9 AGE DW 194 r #10 AGE DW 174 r #11 AGE DW 196 ■ #12 AGE DW 190 ■ #13 AGE DW 193 ; #14 AGE DW 194 ; #l r AGE DW 200 ; #16 AGE S3 : DW 172 #1 AGE DW 174 #2 AGE DW 176 #3 AGE DW 181 #4 AGE DW 184 #5 AGE DW 175 #6 AGE DW 187 #7 AGE DW 191 #8 AGE DW 193 *9 AGE DW 173 #10 AGE DW 175 #11 AGE DW 197 #12 AGE DW 191 #13 AGE DW 193 #14 AGE DW 173 #15 AGE DW 200 #16 AGE S4 : DW 171 ; #1 AGE DW 175 ; #2 AGE 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 ? 3 3 3 3 3 3 3 3 3 3 3 3 4 4 A-132 dw 179 #3 AGE 4 DW 161 #4 AGE 4 DW 184 #5 AGE 4 DW 175 *6 AGE 4 DW IBS *7 AGE 4 DW 192 #8 AGE 4 DW 194 #9 AGE 4 DW 193 #10 AGE 4 DW 174 #11 AGE 4 DW 198 #12 AGE 4 DW 192 #13 AGE 4 DW 193 #14 AGE 4 DW 194 #15 AGE 4 DW 201 f #16 AGE 4 ; Fortune teller game ;GEORGE 07/04/96 MACRO €5-S3,SAY 62-78 Fortyes_Sl: DW 065 #1 AGE 1 DW 066 #2 AGE 1 U* 067 #3 AGE 1 DW 068 #4 AGE 1 DW 069 #5 AGE 1 DW G7Q #6 AGE 1 DW 071 #7 AGE 1 DW 07 2 #8 AGE 1 DW 073 *9 AGE 1 DW 074 #10 AGE 1 DW 075 #11 AGE 1 DW 076 #12 AGE 1 DW 077 #13 AGE 1 DW 078 #14 ^GE 1 DW 079 #15 j-.GE 1 DW QS0 #16 AGE 1 Fortye$_S2; DW 081 #1 AGE 2 DW 062 #2 AGE 2 DW 083 #3 AGE 2 DW 065 #4 AGE 2 DW 066 #5 AGE 2 DW 067 16 AGE 2 DW 068 #7 AGE 2 DW 069 #8 AGE 2 DW 070 #9 AGE 2 DW 071 #10 AGE 2 DW 072 #11 AGE 2 DW 073 #12 AGE 2 DW 074 #17 AGE 2 DW 075 #14 AGE 2 DW 076 #15 AGE 2 DW 077 #16 AGE 2 END FORTUNE END GEORGE 07/04/98 ;touch front sensor table ;GEORGE 07/03/36 MACRO 2“64,SAY 1-61 Tfrnt_Sl; DW 002 *1 AGE 1 DW 003 #2 AGE 1 DW 004 *3 AGE X DW 005 #4 AGE 1 DW 006 #5 AGE 1 DW 007 *6 AGE 1 DW era #7 AGE 1 DW 0 9 #a AGE 1 DW 10 #9 AGE 1 DW u no AGE 1 DW i 12 #11 AGE 1 DW 013 #12 AGE 1 DW 014 #13 AGE 1 DW 015 #14 AGE 1 DW 016 #15 AGE 1 DW 017 #16 AGE 1 Tfrnt_S2; DW 018 #1 AGE 2 DW 019 #2 AGE 2 DW 020 #3 AGE 2 DW 021 #4 AGE 2 DW 022 #5 AGE 2 DW 023 #6 AGE 2 DW 024 #7 AGE 2 DW 025 #6 AGE 2 DW 026 #9 AGE 2 DW 027 no AGE 2 aw 02 S #n AGE 2 DW 029 #12 AGE 2 DW 030 #13 AGE 2 DW 031 #14 AGE 2 DW 032 #15 AGE 2 uw 033 #16 AGE 2 Tf mt_S3 : DW 034 #1 AGE 3 DW 035 82 AGE 3 DW 036 #3 AGE 3 DW 037 #4 AGE 3 DW 038 #5 AGE 3 DW 039 #6 AGE 3 DW 040 #7 AGE 3 DW 041 025 ; : #8 AGE DW 002 #9 AGE 3 DW 042 #10 AGE 3 DW 043 #11 AGE 3 DW 044 #12 AGE 3 DW 045 #13 AGE 3 DW 046 #14 AGE 3 DW 047 #15 AGE 3 DW 048 #16 AGE 3 Tf rnt_S4 i DW 049 #1 AGE 4 DW 050 #2 AGE 4 DW 051 #3 AGE 4 DW 052 #4 AGE 4 DW 053 #5 AGE 4 DW 054 #6 AGE 4 DW 055 #7 AGE 4 A-J34 DW 056 #8 AGE 4 DW 057 AGE 4 m 056 #10 AGE 4 DW 059 #11 AGE 4 DW 060 112 AGE 4 DW 061 : #13 AGE 4 DW 062 ; 414 AGE 4 DW 063 ; #15 AGE 4 DW 064 #16 AGE 4 ;EKD GEORGE 07/03/9E ?feed sense table ; DO FEED (Do 1INVERT! ;GEORGE 07/05/98 Feed^Sl: DW 117 ; #1 AGE 1 DW 103 #2 AGE 1 DW 104 #3 AGE 1 DW 105 #4 AGE 1 DW 106 #5 AGE 1 DW 107 #6 AGE 1 DW 108 #7 AGE 1 DW 109 #8 AGE 1 DW 110 AGE 1 DW 111 #10 AGE 1 DW 112 #11 AGE 1 DW 113 #12 AGE 1 DW 114 #13 AGE 1 DW 1 U1 #14 AGE 1 DW 115 #15 AGE 1 DW 116 #16 AGE 1 Feed_S2: DW lie #1 AGE 2 DW 119 #2 AGE 2 DW 120 #3 AGE 2 DW 121 #4 AGE 2 DW 122 #5 AC 2 DW 123 #6 AGE 2 DW 124 #7 AGE 2 DW 125 #8 AGE 2 DW 126 #9 AGE 2 DW 127 #10 AGE 2 DW 128 #11 AGE 2 DW 113 #12 AGE 2 DW 114 #13 AGE 2 DW 111 #14 AGE 2 DW 129 #15 AGE 2 DW 116 #16 AGE 2 Feed„S3: DW IIS ; #1 AG E 3 DW 130 i #2 AGE 3 DW 131 ; #3 AGE 3 DW 132 ; #4 AGE 3 DW 122 ; #5 AGE 3 A-135 m 107 #6 DW 133 #7 DW 134 «a DW 110 *9 DW 111 #10 DW 135 *11 DW 113 #12 DW 114 #13 DW 111 #14 DW 135 #15 DW 116 #16 Feed_ _S4 : DW 145 #1 DW 136 #2 DW 137 #3 DW I3fl #4 DW 139 *5 DW 140 #6 DW 141 #7 DW 142 #8 DW 110 #9 DW 111 #10 DW 143 #11 DW 113 *12 DW 114 #13 EM 111 #14 m 144 #15 EM’ 116 #16 ; END GEORGE 07 /G5/9S ;touch front sensor table ; DO WAKE ;DONE SG Wakeup_Sl T DW 146 #1 dw 149 *2 DW 150 #3 DW 154 *4 DW 158 #5 DW 159 *6 DW 163 #7 DW 166 #8 DW 146 #9 DW 149 #10 DW 150 #11 DW 154 #12 DW 158 #13 DW 159 #14 DW 163 #15 DW 166 #16 Wakeup_S2 : DW 147 i #1 DW 149 *2 DW 151 #3 dw 155 #4 DW 158 #5 DW 160 #6 dw 163 #7 DW 167 #8 DW 147 #9 DW 149 #10 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE AGE 4 AGE 4 AGE 4 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 A-m DW 151 DW 155 DW 158 CW 160 DW 163 DW 167 Wakeup_S3: DW 148 DW 149 DW 152 DW 156 DW 158 DW 161 DW 164 DW 168 DW 14 8 DW 149 DW 152 DW 156 DW 158 DW 161 DW 164 DW 168 Wakeup_54: DW 148 DW 14 i DW 153 DW’ 157 dw Isa DW 162 dw 165 DW 169 DW 148 DW 149 DW 153 DW 157 DW 158 DW 162 DW 16. DW 169 ;Bai1 tilt sensor tanle #11 AGE 2 #12 AGE 2 #13 AGE 2 #14 AGE 2 #15 AGE 2 #16 AGE 2 r #1 AGE 3 #2 AGE 3 #3 AGE 3 #4 AGE 3 #5 AGE 3 #6 AGE 3 #7 AGE 3 «a AGE 3 #9 AGE 3 #10 AGE 3 #11 AGE 3 #12 AGF 3 #13 AGE 3 #1/ AGE 3 #: ^ AGE 3 #16 AGE 3 #1 AGE 4 # 2 AGE 4 # 3 AGE 4 #4 AGE 4 #5 AGE 4 #6 AGE 4 #7 AGE 4 #3 AGE 4 #9 AGE 4 #10 AGE 4 #1* AGE 4 #12 AGE 4 #13 AGE 4 #14 AGE 4 #15 AGE 4 #16 AGE 4 ts^ioi ,SAY 79-106 ; DO TILT (HANGING OV") ;START HANGOUT MACRO ;GEORGE 07/04/98 ; DO HANGOUT r DO BORED Bored^Sl? ;bored time- out 085 ; #1 AGE 1 DW 086 #2 AGE 1 DW 087 #3 AGE 1 DW 088 #4 AGE 1 DW 089 #5 AGE 1 DW 090 #6 AGE 1 DW 091 #7 AGE 1 ;s]eep DW 092 #8 *GE 1 DW 093 #9 AGE 1 ;dobedo DW 094 #10 AGE 1 ; yawn A-J37 DW 095 ; #11 DW 095 ; #12 dw 096 ; #13 DW 09 1 ; #14 DW 097 ; #15 DW 098 ; #16 Bored_S2 : DW 065 ; #1 DW 086 ; #2 m 087 ; #3 DW 088 ; #4 DW 089 ; #5 DW 099 ; DW 091 ; #7 DW 092 ; #8 DW 093 ; #9 DW 094 ; #10 DW 095 ; #11 TUI 095 ; #12 DW 096 ; #13 DW 091 ; #14 DW 097 ; US DW 098 ; #16 Bored_S3: DW 035 i #1 DW 086 ; #2 DW 087 ; #3 DW 088 ; #4 dw 101 ; #5 DW 100 ; *6 DW 091 ; #7 DW 092 ; #8 DW 093 ; #9 DW 094 ; #10 DW 095 ; #11 DW 095 { #12 DW 096 j #13 DW 091 ; #14 DW 097 ; #15 DW 098 ? #16 Borfed_S4 ; DW 085 i #1 DW 086 ; #2 DW 087 ; #3 DW 086 ; #4 DW 101 ; #5 DW 100 ; # 6 DW 091 ; #7 DW 092 ; IS DW 093 ; #9 DW 094 ; #10 DW DW 095 095 ; #11 ; #12 DW 096 ; #13 DW 091 ; #14 DW 097 ; #15 i Bit'. DW 098 ; #16 m w ; END HANGOUT ;END GEORGE 07/04/98 fe^L - M. , m Mr. «= AGS 1 ;sigh AGE 1 ; sigh AGE 1 ; haa AGE 1 ;sleep wat 96 dmh AGE 1 ;heey AGE 1 ;phone AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 ACE 2 AGE 2 AGE 2 AGE 2 AGE 1 ; sleep was 96 dnOi AGE 2 AGE 2 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 1 ;sleep was 96 dmh AGE 3 AGE 3 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 1 jsleep was 96 dmh AGE 4 FIXED DKH WAS 96 AGE 4 A-m jGEORGE 07/07/98 ;INVERT ;Ball invert sensor table Invrt_Sl: DW 202 #1 AGE 1 DW 203 12 AGE 1 DW 206 #3 AGE 1 DW 208 #4 AGE 1 DW 212 #5 AGE 1 DW 213 #6 AGE 1 DW 217 #7 AGE 1 DW 219 KB AGE 1 DW 220 #9 AGE 1 DW 224 #10 AGE 1 DW 228 #11 AGE 1 DW 232 #12 AGE 1 DW 234 813 AGE 1 dw 232 #14 AGE 1 DW 234 #15 AGE 1 DW 235 #16 AGE 1 Invrt_S2 i DW 202 #1 AGE 2 DW 203 #2 AGE 2 DW 207 #3 AGE 2 DW 209 #4 AGE 2 DW 212 #5 AGE 2 DW 214 #6 AGE a* DW 217 #7 AGE 2 DW 219 #8 AGE 2 DW 221 # 9 AGE 2 DW 225 #10 AGE 2 dw 229 #11 AGE 2 DW 232 #12 AGE 2 dm 234 #13 AGE 2 DW 232 «14 AGE 2 DW 234 #15 AGE 2 DW 23 6 #16 AGE 2 Invrt_S3: DW 202 ? #1 AGE 3 DW 204 ; #2 AGE 3 w 207 ; #3 AGE 3 DW 210 #4 AGE 3 DW 212 #5 AGE 3 DW 215 AGE 3 DW 21B #7 At. . 3 DW 219 #6 AGi 3 m 222 #9 AGE 3 DW 226 no AGE 3 DW 230 #11 AGE 3 DW 232 #12 AGE 3 DW 234 #13 AGE 3 DW 232 #14 AGE 3 DW 234 #15 AGE 3 DW 237 ; #16 AGE 3 mvrt_S4; DW 202 7 #1 AGE 4 DW 205 ; #2 AGE 4 DW 207 ; #3 AGE 4 DW 211 ; #4 AGE 4 A-139 D ■ 212 #5 AGE 4 L 1 216 #6 AGE 4 DW 213 #7 AGE 4 DW 219 #8 AGE 4 m 223 #9 AGE 4 DW 227 #10 AGE 4 LW 231 #11 AGE 4 DW 233 #12 AGE 4 DM 231 #13 AGE 4 DM 233 #14 AGE 4 DW 234 #15 AGE 4 DW 238 #16 AGE 4 ;GEORGE 07/07/98 ; BACK ;touch back sensor table Tback^Sl: DW 239 #1 AGE 1 DW 240 #2 AGE 1 DW 244 #3 AGE 1 DW 248 #4 AGE 1 DW 249 #5 AGE 1 DW 248 #6 AGE 1 DW 253 #7 AGE 1 DW 256 #8 AGE 1 DW 253 #9 AGE 1 DW 239 #1* AGE 1 DW 243 #11 AGE 1 DW 261 #12 AGE 1 DW 263 #13 AGE 1 DW 266 #14 AGE 1 DW 269 #15 AGE 1 DW 272 #16 AGE 1 Tback_S2: DW 239 #1 AGE 2 DW 24: #2 AGE 2 DW 24 5 #3 AGE 2 dw 243 #4 KGB 2 DW 250 #5 AGE 2 DW 248 #6 AGE 2 DW 253 #7 AGE 2 DW 257 #8 AGE 2 DW 259 #9 AGE 2 DW 239 #10 AGE 2 DM 248 #11 AGE 2 DW 262 #12 AGE 2 DW 264 #13 AGE 2 DW 267 #14 AGE 2 DW 270 #15 AGE 2 DW 273 #16 AGE 2 Tback_S3: DW 239 #1 AGE 3 DW 242 #2 AGE 3 DW 246 #3 AGE 3 DW 248 #4 AGE 3 DW 251 #5 AGE 3 DW 248 #6 AGE 3 DW 254 #7 AGE 3 DW 257 ■ #8 AGE 3 m 260 ; #9 AGE 3 '■ A-I40 DW 239 #10 AGE 3 DW 240 #11 AGE 3 DW 261 #12 AGE 3 DW 265 #13 AGE 3 DW 268 #14 AGE 3 DW 271 #15 AGE 3 DW 274 116 AGE 3 Tbsck_54: DW 239 #1 AGE 4 DW 24 3 #2 AGE 4 EM 247 #3 AGE 4 DW 246 #4 AGE 4 DW 252 #5 AGE 4 DW 248 #6 AGE 4 DW 255 #7 AGE 4 DW 257 #8 AGE 4 DW 260 #9 AGE 4 DW 239 #10 AGE 4 DW 246 #11 AGE 4 DW 262 #12 AGE 4 DW 265 #13 AGE 4 DW 268 #14 AGE 4 DW 271 #15 AGE 4 DW 275 #16 AGE 4 ■END GEORGE 07/07/9S ; I.R. receive table ; DO IR IR_S1: DW 393 i #1 AGE 1 DW 393 #2 AGE 1 DW 393 #3 AGE 1 DW 393 #4 AGE 1 DW 394 #5 AGE 1 DW 395 #6 AGE 1 DW 396 #7 AGE 1 DW 396 #6 AGE 1 DW 291 #9 AGE 1 DW 399 #10 AGE 1 DW 399 #11 AGE 1 DW 400 #12 AGE 1 DW 401 #13 AGE 1 DW 401 i #14 AGE 1 DW 402 j #15 AGE 1 DW 403 #16 AGE 1 1R_S2 r DW 404 #1 AGE 2 DW 404 #2 AGE 2 DW 404 #3 AGE 2 DW 405 #4 AGE 2 DW 405 #5 AGE 2 DW 406 #6 AGE 2 DW 407 #7 AGE 2 m 407 #B AGE 2 DW 291 #9 AGE 2 DW 409 #10 AGE 2 DW 409 #11 AGE 2 IR_S3: IJCS4: DW 400 i #12 AGE 2 DW 411 ; #13 AGE 2 DW 411 ; #14 AGE 2 m 412 ; #15 AGE 2 m 413 ; #16 AGE 2 DW 414 ; #1 AGE 3 DW 414 ; #2 AGE 3 DW 414 S #3 AGE 3 DW 414 ; #4 AGE 3 DW 414 ; #5 AGE 3 DW 415 ; #6 AGE 3 DW 416 ; #7 AGE 3 DW 416 ; #8 AGE 3 DW 291 ; #9 AGE 3 DW 40@ ; #10 AGE 3 DW 418 ? #11 AGE 3 DW 428 ; #12 AGE 3 DW 419 ; #13 AGE 3 DW 419 ; #14 AGE 3 DW 420 ; #15 AGE 3 DW 403 ; #16 AGE 3 EM 421 ; #1 AGE 4 DW 421 ; #2 AGE 4 DW 421 ; #3 AGE 4 DW 421 ; #4 AGE 4 DW 421 ; #5 AGE 4 DW 422 ; #6 AGE 4 DW 423 l #7 AGE 4 DW 423 ; #8 AGE 4 DW 291 ; #9 AGE 4 DW 425 * #10 AGE 4 DW 426 ; #11 AGE 4 dv: 427 ; #12 AGE 4 DW 428 I #13 AGE 4 DW 428 ; #14 AGE 4 Dri 429 ; #15 AGE 4 DW 413 ; #16 AGE 3 * ; light sense t&Jble fbright sercsej ;DO LIGHT Light_Sli DW 293 i n AGE 1 m 305 ; 003 # #2 A< DW 294 ; #3 AGE 1 DW 295 ? #4 AGE 1 DW 296 i #5 AGE 1 DW 297 ; #6 AGE 1 DW 298 f *7 AGE 1 DW 299 ; #8 AGE 1 DW 293 ; #9 AGE 1 DW 305 ; 003 ; DW 294 ; #11 AGE 1 DW 295 f #12 AGE 1 DW 296 ; #13 AGE 1 DW 297 : #14 AGE 1 Light_S2: Light_S3: Light_S4 i DW 298 • 15 AGE 1 DW 299 • 16 AGE 1 DW 293 . U AGE 2 DW 30S ; 003 DW 294 • 3 AGE 2 DW 300 •4 AGE 2 DW 296 • 5 AGE 2 DW 301 • 6 AGE 2 DW 298 • 7 AGE 2 DW 299 • 8 AGE 2 DW 293 ■ •9 AGE 2 DW 305 ; 003 t DW 294 • 11 AGE 2 DW 295 • 12 AGE 2 DW 296 • 13 AGE 2 DW 301 • 14 AGE 2 DW 298 • 15 AGE 2 DW 299 • 16 AGE 2 DW 302 • 1 AGE 3 DW 305 ; 003 DW 294 • 3 AGE 3 DW 303 • 4 AGE 3 DW 296 • 5 AGE 3 DW 304 • 6 AGE 3 DW 298 #7 AGE 3 DW 299 • S AGE 3 DW 302 • 9 AGE 3 DW 305 ; 003 DW 294 • 11 AGE 3 DW 303 • 12 AGE 3 DW 296 • 13 AGE 3 DW 304 • 14 AGE 3 DW 298 • 15 AGE 3 DW 299 • 16 AGE 3 DW 302 • 1 AGE 4 DW 305 ; GG3 DW 294 • 3 AGE 4 DW 306 • 4 AGE 4 DW 296 • 5 AGE 4 DW 307 • 6 AGE 4 DW 298 • 7 AGE 4 DW 299 • 8 AGE 4 DW 302 • 9 AGE 4 DW 305 ?GQ3 DW 294 • 11 AGE* 4 DW 306 • 12 AGE 4 DW 29 6 • 13 AGE 4 DW 307 • 14 AGE 4 DW 298 • 15 AGE 4 DW 299 • 16 AGE 4 #2 AGE 2 • 10 AGE 2 #2 AGE 3 BIO AGE 3 #2 AGE 4 • 10 AGE 4 ;light sense tablo (DARK SENSED ; DO DARK A-143 ; DO LIGHT DARKER Dark^Sl: DW 3OS ; il DW 309 ; #2 DW 310 ; #3 DW 311 ; #4 DW 312 ; #5 DW 313 ; #6 DW 314 ; 17 DW 315 ; ttfi DW 308 ; *9 DW 309 ; #10 DW 310 ; #11 DW 311 ; #12 DW 312 ; #13 DW 313 ; #14 DW 314 ; #15 m 315 ; #16 Dark_£2: DW 316 ; #1 DW 317 ; #2 DW 31fl ; #3 DW 311 ; #4 DW 319 ; #5 DW 313 ; #6 DW 320 ; #7 DW 315 t #8 DW 316 ; #9 DW 317 ; #10 DW 318 ; #11 DW 311 ; #12 DW 319 t #13 DW 313 : #14 DW 320 ; #15 DW 315 ; #16 Dark„S3t DW 321 ; il DW 322 ? #2 DW 323 ; #3 DW 311 ; #4 DW 319 ; #5 DW 313 ; #6 DW 324 ; #7 DW 325 ; #8 DW 321 ; #9 DW 322 ; #10 DW 323 ; #11 DW 311 ; #12 DW 319 ; #13 DW 313 ; #14 DW 324 i #15 DW 325 ; #16 Dark_S4: DW 326 ; #1 DW 327 ; #2 DW 328 ; #3 DW 311 ; #4 DW 329 ; *5 DW 313 ; #6 DW 330 ; #7 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE : AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 1 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 2 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 3 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 AGE 4 A-144 DW 331 ; #8 AGE 4 DW 326 ; 19 AGE 4 DW 327 ; *10 AGE 4 DW 328 ; *11 AGE 4 DW 3X1 ; *12 AGE 4 DW 328 j f 13 AGE 4 DW 313 i #14 AGE 4 DW 330 #15 AGE 4 DW 331 i #16 AGE 4 ; Hide and Seek game table P©ek_Sl: DW 000 ; #0 AGE 1 DW 000 *1 AGE 1 DW 000 #2 AGE 1 DW 000 #3 AGE 1 DW 000 #4 AGE 1 DW 000 #5 AGE 1 DW 000 #6 AGE 1 DW 000 #7 AGE 1 DW 000 #6 AGE 1 DW 000 AGE 1 DW ODD #10 AGE 1 DW 000 #11 AGE 1 DW 000 #12 AGE 1 DW 000 #13 AGE 1 DW 000 #14 AGE 1 DW 000 #15 AGE 1 Peek„S2: DW 000 ; #0 AGE 2 DW 000 #1 AGE 2 DW 000 #2 AGE 2 DW 000 *3 AGE 2 DW 000 #4 AGE 2 DW 000 #5 AGE 2 DW 000 #6 AGE 2 DW 000 #7 AGE 2 DW 000 #8 AGE 2 DW 000 #9 AGE 2 DW 000 #10 AGE 2 DW coo #11 AGE 2 DW 000 #12 AGE 2 DW 000 #13 AGE £p DW 000 #14 AGE 2 DW 000 *15 AGE 2 Peek_s3; DW 000 ; #0 AGE 3 DW 000 #1 AGE 3 DW 000 #2 AGE 3 DW 000 #3 AGE 3 DW 000 #4 AGE 3 DW 000 #5 AGE 3 DW 000 #6 AGE 3 DW 000 #7 AGE 3 DW 000 ; #8 AGE 3 DW 000 f #9 AGE 3 DW 000 \ #10 AGE 3 A-14S Fe*k,S4 DW 000 #11 AGE 3 DW 000 #12 AGF 3 DW 000 #13 AGE 3 DW 000 #14 AGE 3 DW 000 #15 AGE 3 DW 000 ; #0 DW 000 #1 AGE 4 DW 000 #2 AGE 4 DW 000 8 3 AGE 4 DW 000 #4 AGE 4 DW 000 #5 AGE 4 dw 000 #6 AGE 4 DW 000 #7 AGE 4 DW 000 #8 AGE 4 DW 000 #9 AGE 4 DW 000 #10 AGE 4 DW uuu 4k 1 * Hi* ADD A DW 000 #12 AGE 4 DW 000 #13 AGE 4 DW 000 #14 AGE 4 AGE 4 DW 000 #15 AGE 4 Kacro^grpl: ;points into macro tables DW Tbl l_MacroO DW Tbll„Macrol, Tbil_Macro2 , Tbll_Macro3 , Tbll^,Kacro4 f Tbll^MacroB DW Tbl l_Maerro 6 , Tb 1 l_Ma cro7 , Tbl 1 _MacroB, Tbl l_Macro9 , Tbl l_Macro 10 DW Tbl 1 JHacr ol 1, Tbl l_Kftcro 1 2 , Tbl l^Hacro 1 3, Tbl l_Macrc>14 , Tbl l__Mac rol 5 DW Tbll^Macrol 6 ,Tbll JMacrol7 „ Tbll_Macrol 8 , Tbll_Macrol9 , Tbll_Macro20 DW Tbll_Macro21,Tbl1 _J^aero2 2,Tbll_Hacro2 3,TblI_Mac ro2 4,Tbl1_Macro2 5 DW Tbll^Macro2 6 , Tbl 1 „!4a£:r o27 p Tbll_Macro2 8 , Tbl 1 _Macro2 9 f Tbl 1 _M&c ro 3 0 DW Tbll^acro31 f Tbll„Kacro32 H Tbll_Macro33,Tbll_Macro34,Tbll_Macrc35 DW Tbll^acroBfi,Tblljtfacr©37 P Tbll_Macro38,Tbll_Hacro39,TblI_Macrc40 DW Tbll3lacro41,Tbll JMacro42,Tbll_Hacro43 p Tbll_Macrt>44, Tbll_Macro45 DW Tbll_Macro46,Tbll_Macro47 r Tbll_Macro48 ,Tbll_Macro49,Tbll_MacrcS0 DW Tbll_Macro5l,Tbll_Mac-o52 f Tbll„Macro53 p Tbll_.Macro54,Tbll_Macrc55 DW Tbl l_Macrc>56,Tbll_Mac. o57, Tbll_Macro58,Tbll_Macro59,Tbll„Hacro60 DW Tbll_Macro61,TblI^acrc62,TbllJiscro63 i Tbll_Macro64,TbU_Macro65 DW Tbll_Hacro66,Tbll„Macro67,Tbll_Macro6S ( Tbll_Kacro69,Tbll_Macro70 DW Tbll_Macro71,Tbll_Macro72 r Tbll_Macro73 H Tbll_Macro74,Tbll_Macro75 DW Tbll_Kacro76 J TbH_Hacro77,Tbll_Macro7S f Tbn^Macro79 I Tbll„Macrcs80 DW Tbl1 JMacro 8 1,Tbl1^Kacr 08 2,Tbll_Macr 08 3,Tbl1_Macro 8 4,Tb1l„Macro 8 5 DW Tbll_Wacro 8 6 ,Tbll_Macr 08 7,Tbll_Macro 8 8 ,Tbll_KacroS 9 , Tbll_Mac r©9 0 DW TbU_Hacra91,Tbll_Kaoro92,Tbll_Macro93,Tbll_Macro94 P Tbll„Hocro95 DW TbU_Macro96,Tbll_Macro97 # TbU^Macro98,Tbll_Macro99 DW Tbll^MacrolO 0,Tbl] JMacrolOl, Tbll_Macrol02,Tbll_Macrol03 ( Tbll_#*ero 104 DW TbU_Macrol05,Tbll_«acrol06 J Tbll_Macrol07 f TbU^MacrolOS, TbU^Macro 109 DW Tbn_MacrollQ,Tbll^acrQlll,Tbll„Hacroll2,TbH_Macroll3, Tbll_Macro 114 DW Tblljlaeroil5,Tbll_Mocroil6 r Tbllj«acroll7,Tbll^Macroll8,Tbll_Hacro 119 DW Tbl I„Kacrol20, Tb 1 l_Macrol21, Tbll_Macrol22, Tbl l_Macro 123, Tbl l_Macro 124 DW Tbl 1 Macrol25, Tbll_Mscrol2 6, Tbll^Macrol 27 Macro_grp2: ^points into macro tables DW Tbl2„Macrol28 DW Tbl2_Kacrol29 f Tbl2 Jfaerol30, Tbl2.J4acrol3l, Tbl2_F ro!32 , Tbl2„MAcro 133 DW Tbl2_Kacrol34 # Tbl2_Mac:rol35 J Tbl2_MacrQl36 J Tbl2_!^crol37 / Tbl2_ i Hftcro 138 DW Tbl2_Macrol39, Tbl2_Macrol4Q , Tbl2_Macrcl4 1, Tbl2_Macrol42, Tbl2_Macro 14 3 DW Tbl2_Macrol44 ( Tbl2_Macrol45 ( Tbl2JMacrol4 6, Tbl2_Macrol47,Tbl2_Macro 148 DW Tbl2jMa cro149,Tbl2_Macrol50 # Tbl2_Hacrol51,Tbl2_Macrol52,Tbl2 Macro 153 DW Tbl2_Maero154,Tbl2_Kacrol55,Tbl2_Hacrol56 ( Tbl2_Macrol57.Tbl2_Macro 15B DW Tbl2 _Macro159,Tbl2_Macrol60 ,Tbl2_Macrol6l,Tbl2 j4acrol62 ( Tbl2„Hacro 163 DW Tbl2_MacrolS4,Tbl2_Macrol65,Tbl2_Macrol66 , Tbl2__Macrol67,Tbl2„Macro 168 DW Tbl2_Macrol69 r Tbl2_Macrol70, Tbl 2__Mac roll l, Tbl2_Macrol72 , Tbl2„MiiCro 173 DW Tbl2_Macrol74,Tbl2_Macrol7 5 r Tbl2_Maerol76,Tbl2_Macrol77,Tbl2„Macrc 176 DW Tbl2_Maerol79 f Tbl2^MacirolB0 P Tbl2_Maerol3l r Tbl2_MacrcI02 I Tbl:_Kaere 183 DW Tbl2_Maerol84,Tbl2JMacrol85,Tbl2„Maerol86 ,Tbl2 Macro1B7,Thl2„M«cro 138 DW Tbl2_Macrol89*Tbl2_Macrol90 t Tbl2_Macrol91,Tbl2_Macrcl92,Tbl2 Macro 193 DW Tbl2_Macrol94 * TbI2j*acrol95, Tbl2__Macrol&6 f Tbl2_Macrol97 H Tbl2_Macro 193 DW Tbl2_Macro19 9,Tbi2_Macro2Q0,Tbl2_Macro201 r Tbl2_Maero202,Tbl2 JtRfcro 203 DW Tbl 2_Macro204 , Tbl2_Macro2 0 5, Tbl2_Macro2Q6 , Tbl2_Maero207 r Tbl2_Macro 20 6 DW Tbl2_Macro2Q9,Tbl2 JMacro210,Tbl2_Macro2ll.Tbl2_Macro212.Tbl2_Maero 213 DW Tbl2_Macro214,Tbl2_Macro215, Tbl2_Macro2l6 , Tbl2_Macro217 , Tbl2_Macrc 213 DW Tbl2_Maero219 , Tbl2,JHacr©220, Tbl 2_Macro221 , Tbl2_Macro£22 , Tbl2_Macro 223 DW Tbl2_Macro224,Tbl2_Macro225 # Tbl2jMacro226,Tbl2_Macro227,Tbl2 Macro 223 DW Tbl2_Macr q22 9, Tbl2_Kacro230,Tbl2_Macro231,Tbl2JMacro232, Tbl2 Macro 233 DW Tbl2_Macro234 , Tbl2_Macro235, Tbl2^Macro236 f Tbl 2 JMaero237 , Tbl2_Macre 233 DW Tbl2_Maero239 , Tbl2„Macro240 , Tbl2_Macro241, Tbl2„Macro242 ( Tbl 2_Macro 243 DW Tbl 2_Macro2 4 4 , Tbl2_Mac ro2 4 5, Tbl2_Macro2 4 6, Tbl 2_Macro2 4 7 * Tbl 2 Macro 248 DW Tbl2_Macro24 9,Tbl2_Macro250 ( Tbl2_Macro25l,Tbl2_Macro252 , Tbl2_Maero 253 DW Tbl2_Macro254,Tbl2_Macro255 Macro_grp3: ; points into macro tables DW Tb13_H»cro25 6 DW Tbl3 JHacro2 57 , Tbl3_Macro2 5 8, Tbl 3_Maci: o2 59 , Tbl 3_Macro2 60 , TblB.Macro 261 DW TM3^cro262,Thl3_Maer o263, Tbl3_Hacra2t>4, Tbl B^acr o265 ,Tbl3j4acro 266 W Tbl3_Macro267, Tbl 3.Macro268, Tbl3_M&cro269, Tbl 3_Macro270 r Tbl 3.Macro 271 Tffl Tbl3_M*cro272, Tbl3_Macro273, Tbl3_#acro274 ,Tbl3_Macro275 f Tbl 3_Macre 276 DW Tbl3_Macra2?7,Tbl3_Jlacro278,Tbl3_Kacro279,Tbl3„Macro2Q0,Tbl3_Macro 281 DW Tbli„Macro282,Tbi3_^acro283,Tbl3.Macro284,Tbl3_Macro285,Tbl3_Hacro 286 DW Tbl3_Macro287,Tbl3,Jtecro288,Tbl3_Macro2a9,Tbl3.Macro290,Tbl3.Macro 291 DW Tbl3_Macro292,Tbl3_Macro293,Tbl3_Macro2&4,Tbl3_K*crc295„ Tbl3_Macro 296 DW Tbl3_Macro297,Tbi3_MacrQ298,Tbl3_Macro299,Tbl3.Kacro300 H Tbl3_Macro 301 DW Tbl3_Macr o302 r Tbl3_Kacro3G3 , Tbl3_Macro304 ( Tbl3„Kacro305 H Tbl 3_Macr-o 306 DW Tbl3_Macro307 H TbI3_Mflcro3Q8 ,Tbl3_M«cro309 ,Tbl3.Macro310,Tbl3_Kacro 311 DW Tbl3jfacro312,Tbl3_Macro313,Tbl33acro314 l Tbl3_Macro3l5,Tbl3„»acro 316 DW Tbl3 JMacro3l7, Tbi3_Macro318 , Tbl3_Macro3l9 ,Tbl3_Macjro320, Tbl3.Ma.crp 321 DW Tbl3j395, Tbl4_Macro396, Tbl4_Macro397 ,Tbl4_Macro398, Tbl^Macre 399 DW Tbl4_Maero40C,Tbl 4 Jtocro401,Tbl4_Hacro402,Tbl4_Macro4G3,Tbl4_Macrc 404 TM Tbl4_Maoro405,Tbi4JIacro406 1 Tbl4_Wacro407 I Tbl4 1 _Maeto408,Tbl4_Macro 409 m Tbl4_Macro410 , Tbl4 JMacro411, Tbl 4^JMacro412 , Tbl 4_Macro413 , Tbl 4 Macro 414 DW Tbl4_Macro415 p Tbl4_Macro416,Tbl4„Macro417,Tbl4 Macro41fl,Tbl4 Macro 419 DW Tbl4_Macro420 p Tbl4 Jflacro421 ( Tbl4_Macro422,Tfcl4 Macro423 ( Tbl4 Macro 424 DW Tbl4_Macro42S J Tbl4_Macro42€,Tbl4_Macro42" f Tb14 Macro428,Tbl4 Macro 429 DW Tbl4_Macro4 30,Tbl4_Macro431 H Tbl4_Mecro432, Tbl4jMacro433,Tbl4 Macro 434 DW Tbl4_Macro435,Tbi4_Kacro436,Tbl4_Macro437 l Tbi4_J1flcrc438,Tbl4.Jtecro 439 DW Tbl4_Macro44Q,Tbl4_Macro441,Tbl4„Macro44 2 f Tbl4_Macro443 *Tbl4 Macro 444 DW Tbi4_Macro445,Tbl4_Macro446*Tbl4„Macro447,Tbl4 JMacro4 48 ( Tbl4 Macro 4 49 m Tbl4_Macro450 f Tbl4_Macro4 51 p Tbl4 JMacro452 ( Tbl4_Macro4 53 ( Tbl4 Macro 454 DW Tbl4_Macro455 1 Tbl4_Macro456,Tbl4_Macro457 r Tbl4„Macro458,Tbl4 Macro 4 59 m Tbl4_Macro460,Tbl4 J4acro461 r Tbl4_Macro462,Tbl4_Maero463,Tbi4 JMacro 4 64 DW Tbl 4 JMacro4 6 5 f Tbl4_Kacro4 6 6, Tbl 4_Kacro4 67 , Tbl 4 _Macrc4 6 a , Tbl 4 „Macr o 469 Da 1 Tbl4_Macr o 470 „ Tbl4_Macre4?l, Tbl 4_Macro472 * Tbl4„Macro473 „ Tbl4_Macro 474 DW Tbl4_Macro4 7 5 H Tbl4„Macrc4 7 6 * Tbl4_Macrc 477 ( Tbl4_Macro4 1$, Tbl4_Macro 479 DW Tbl4„Macro40G,Tbl4_Kacro4Sl* Tbl4_Macro482 H Tbl4_Maero4S3 „ Tbl4_Macro 4 84 DW Tbl4_Ma cro4 6 5,Tbl4„Macro4 86,Tbl4_Macro4 87 ( Tbl4 _Macro4 6 8,Tbl4_Kacre 489 DW Tbl4_Macro490,Tbl4„Macro491,Tbl4_Macro4 9 2 p Tbl4_Macro49 3 p Tbl4__Macro 494 DW Tbl4^Macro495 t Tbl4_Macro496 ,Tbl4_Macro497 p Tbl4_Macro49S Tbi4_Macrc 499 DW Tbl4 JtectoSQQ f Tbl4_Macro50l,Tbl4_Macro502 , Tbl4_Macro503 , Tbl4_Macrc 504 DW Tbl4„Macro505,Tbl4 m Macro506,Tbl4_Macro507 ,Tbl4_Macro508,Tbl4_Macro 50 9 DW Tbl4_Macro510 r Tbl4_J*acro51i ; ; MACRO TABLES ; The sensor tables point into the Macro table- This table in turn ; gets speech and motor table data. ; This can be an entry of 1-511 and effectively chains motor and ; speech tables together to reuse previous speech motor segments. A-149 S The first group of msnbers is the speech/motor table value. ? The last line is the terminator of 00. (00 so f DB' takes 1 less byte) ; ex: 1 - will call the saysent 1 and the motor table 1* Tbli^MacroO : DW 511 DW 00 ,*■end FOR NAME TESTING DMH WAKE ; DW 124 ;02 ; DW 125 ; DW * 126 ; m 399 ; de1ay i m 395 ; ME ; DW 224 ; KAY-LAH-KA ; DW 152 ; DW 00 ;end ; (MIDDLE) ; put sounds and motions together ; DW 5 (first sound and motion, in this case *5" ; DW 3 (next sound and motion, in this case *3") ; DW 00 ( end of sequence) Tbll„Macrol: DW 01 dw 00 ; end ;GEORGE 07/Q3/9fi Tbll_Macro2: DW 001 ;FRONT SEQ1AGE1 DW 00 ;end Tbll_Macro3: DW 002 ;FRONT SEQ2AGE1 DW 00 ; end Tbll_Macro4; DW 003 ;FRONT SEQ3AGE1 DW 004 DW 00 ; end Tbll^MacroB: DW 003 ;FRONT SEQ4AGE1 DW 00 5 DW GO ; end Tbll_Macro6; DW 006 ;FRONT SEQ5AGE1 DW 00 ; end A-150 Tbll_Macro7: DW 006 ;FR0NTSEQ6AGE1 DW 007 DW 00 ;end Tbll_Macro8: DW 008 ;FRONT SEQ7AGE1 DW 003 DW 00 ; end Tbll_Macro9: DW 009 ;FRONTSEQ8AGE1 DW 003 m 00 ; end Tbll^MacrolO t m 010 ;FRONT SEQ9agel DW 00 ; end Tbll^Macroll: DW Oil DW Gil ; £rontseqlQage1 DW 00 fend Tbll_Macrol2: DW 012 DW 001 ;seq11 FRONT AGLI ADD SAY001 DW 00 , end Tbll_Macrol3. DW 001 * DW 013 ;seql2 FRONT AGE1 ADD SAY001 DW 00 ; end Tbll_M&crol4 ? DW 014 ;seql3 FRONT AGE! ADD SAY003 DW 003 DW 00 ; end } TbIl__Hacrol5 ; DW 015 l seql4 FRONT AGEl DW 00 i end Tbll_Macrol6: DW 016 ;seql5 FRONT AGEl DW 00 ?end Tbll„Macrol7: DW DW DW DW 001 017 01B 001 ;seql6 FRONT AGEl BETWEEN 2 {20) DW 00 ; end Tbll_Macrol8i DW 019 ;FRONT SEQ1AGE2 DW 00 ; end Tbll_Macrol9: DW 001 A-151 DW 020 .■FRONT SSQ2 AGES DW 00 ; end * Tbll_Macro20: DW 010 DW 021 ;SEQ3AGE2 FRONT ADD SEQ9AGB1 DW 00 ;end TbllJKAcro21; DW 022 ;S£Q4 AGES FRONT DW 023 DW 00 ; end TbllJ33; Dirt 001 DW 035 DW 00 Tbll_Macro34: DW 001 DW 036 DW 00 Tbll_Macro35: DW 003 DW 037 DW 00 Tbll_Macrc36: DW 010 DW 03 & DW 00 Tbll_Macro37: DW 015 DW 039 DW 00 TbllJfocroaS; DW 015 DW 023 DW 00 Tbll_Macro39; DW 040 DW 00 Tbll_Ma.cro4D ; DW 041 DW 003 DW 00 Tbll_Nacro41 * DW 042 DW 003 DW 00 Tbll_Macre42: DW 043 DW 001 DW 00 Tbll_Macro43; DW 044 DW 00 ;end ;SEQ16 FRONT AGE2 ; end ;SED1 FRONT AGE3 ; enc' ;SEQ2 FRONT AGE3 ; end ;SEQ3 FRONT AGE3 rend ;$EQ4 FRONT AGE3 ; end ;SEQ5 FRONT AGE3 ; end ;$EQ6 FRONT AGE3 ; end ;SBQ7 FRONT AGE3 ; end ;SEQ8 FRONT AGE3 ; end ;SEQ10 FRONT AGS3 ; end ; end ; S*.*Q 11 FRONT AGE 3 Tbll,J*acro44; DW m DW Tbll_Hacro45: DW DW DW DW 045 001 t SEQ12 FRONT AGE3 {HEEY,TICKLE ME) ADD20 00 ;end 001 046 ; SEQ13 fRONT AGE3 { NANNY, NANNY} ADD2 0 047 ;RASBERRY HE HE HE 00 ;end TbllJ4acro46 : DW 003 DW 028 ;SECT4 FRONT AGE3 DW 003 DW 00 }end Tbll_Macro47; dw 034 ;SEC15 FRONT AGE3 DW 001 DW 00 ; end Tbll„Hacro48: DW 001 DW 04S DW 049 ;SEQ16 FRONT AGE3 DW 00 ; end 7bll_Macro49; DW 044 ;SE21 FRONT AGE4 DW OG ; end J Tbll_M^cro50: DW 001 DW 050 ; SEQ2 FRONT AGE4 DW 051 DW OO ; end TbIl_Macr&51: DW 003 DW 052 ? SEQ3 (YOU) FRONT AGE4 DW 050 DW 053 ; EEQ3 (HE) FRONT AGE4 DW 00 ; end Tbn„Macro52: DW 026 DW 053 DW 054 DW 050 ; 3EQ4 FRONT AGE4 DW 001 DW 00 ; end ; Tbl1 J3aeroS3; DW 007 DW 055 DW 056 i SEQ5 FRONT AGE4 DW 00 ; end Tbl l_J*acro54; DM 026 - . . vv :&it •>;•&»&; 'Ly.-.ig DM 053 DM 054 EM 052 DM 018 ;SE06 FRONT AGE4 DM 00 ;ei>d Tbll.MacroSS s DM 001 DW 046 DW 055 ;SEQ7 FRONT AGE4 DM 00 ,-end Tbll_Macro56: DW 026 DW 05? DW 050 DW 051 DW 058 DW 003 ;SEQ8 FRONT AGE4 DW 00 ; end Tbil_MACro57: DW 042,001 f SEQ9 FRONT AGE4 DW 00 ; end Tbll_Macro58 : dw 0S9 ;SEQ10 FRONT AGE4 DW 050 DW 00 ; end Tbll_Macro59: DW 044 DW 003 ;SEQ11 FRONT AGE4 m 00 ; end TbUjM&sro60: DW 001 ;EEQ12 DW 00 ; end Tbll„Kacro6l: DW 001 DW 046 DW 047 SEQ13 FRONT AGE4 dw 00 ; end Tbll_Macro62: DW 026 DW 060 ;£E014 FRONT AGE4 DW 00 ; end Tbl l__Macro63: m 061 DW 003 SEQ15 FRONT AGE4 DW 00 ;end Tbll„Macro64: DW 007 DW 051 ;SEQ16 FRONT ACE4 DW 00 jend A-1SS 165; ; SG DONE DW 124 DW 151 DW 00 ;end Tbl2j*acroi66: ?SG DONE DW 124 DW 152 DW 131 DW 153 DW 154 DW 00 ; end Tbl2_&iacrGl67 ; ; SG DONE DW 124 DW 152 DW 155 DW 153 DW 154 DW 00 ; end Tbl2J4acrol6B; ; SG DONE DW 124 DW 152 ;DW 153 DW 131 DW 156 DW 154 DW 00 ;end Tbl2_Kacrol69; ;SG DONE DW 124 DW 053 ;*38 DW 155 DW 156 DW 154 DW 00 ; end jEND WAKE 07/06/98 ;END GEORGE ;GEORGE 0//06/98 ;HUNGER Tbl2_Macrcl7C: ; SG DONE ? HUNGEK DW 159 DW 165 DW 412 ; DHH DW 00 ;end Tbl2_Mncrol71: ;SG DONE DW 160 DW 165 DW 412 ;DHH DW 00 ;imd Tb 12_Macrol7 2 : ; SG DONE m 160 DW 00 ; end Tbl2jHacrol73: ;SG DONE A-I67 168 159 165 412 ;DMH ; end ;SG DONE 16B 160 165 412 ;DMH ; end ;SG DONE 168 160 412 ;DMH ; end ;SG i^ONE 163 158 159 ; end DW DW W DW DW 00 Tbl2_M«ciol74: DW DW DW DW DW 00 *2_Macrol75; DW DW DW DW 00 Tbl2_Macrol76; DW DW DW DW 00 Tbl2„Macrol77: i SO DONE DW 163 DW 158 DW 160 DW 00 ;end Tbl2_ j Macrol78 j iSG DONE DW DW DW DW 00 Tbl2_Kacrol79s DW m DW DW 00 Tbl2J*acrol8Q: ?SG DONE DW 163 DW 168 DW EW DW 00 Tbl2_Hacrol81: DW DW DW DW DW 00 Tbl2_Eacrs>lB2: ;SG DONE DW 163 163 157 159 ; end ;SG DONE 163 157 160 ; end 159 163 ; end ;SQ DONE 163 169 160 163 ; end A-I68 DW 163 DW 168 m 161 DW 159 DW 165 DW 412 ;DMH ow 00 ; end Tbl2„MiicrolS3: ;SG DONE DW 163 DW 163 DW 168 DW 161 DW 160 DW 165 DW 412 ; DMH DW GO ; end Tbl2_MacroiS4 j ;SG DONE DW 163 DW 1 163 DW 168 DW 162 DW 160 DW 00 ; end Tbl2_Mac-ol85: ;SG DONE DW 168 DW 1 161 DW 159 DW 00 ; end Tbl2_Macrol86 ; ;SG DONE DW 168 DW 161 DW 160 DW 00 ; end Tbl2_MacrolS7: ;SG DONE DW 168 DW 162 DW 159 DW OO ; end Tbl2Jtacrol88 : , SG DONE DW 168 DW 162 DW 160 DW 00 ; end Tbl2_Macrol89 : . SG DONE DW 168 DW 166 DW 159 DW 1 0 0 ; end * SG DONE DW 168 DW 167 DW 159 A-169 m bw m oo Tbi2_Macrol9l: DW DW DW DW DW DW 00 Tbl2_Kacrol92; DW DW DW DW 00 Tbl2_Jfacrol93 : DW DW DW 00 Tbl2„Macrol94: DW DW DW DW DW 00 Tbl2_Kacrol95: DW DW DW DW 00 Thl2_K&cral96: DW DW DW DW 00 I Tbl2_JH«crol 97; DW DW DW DW 00 Tbl2_Kacrol9 6 : DW DW DW DW 00 ; Tbl2_M&c ro 1S 9 : DW DW DW DW DW 165 412 ;DMH ; end ;SG DONE 163 167 160 165 412 ;DMH ;end ;SG DOME 16fl 167 160 ;end ;SG DONE 163 163 i end ; SC DONE 163 163 165 412 ; DKH t end ;SG DOME 168 161 159 ; end ; SG DONE 16S 161 160 ; end ;SG DOME 16S 162 159 ; end ;SG DONE 168 162 160 ;end 164 168 161 159 165 ;SG DOME DW 00 Tbl2_Macro20Q: DW DW DW DW DW DW 00 ; Tbl2 JWacro201: dw m DW DW DW m oo ;end 164 168 162 159 165 ; end ;SG DONE ; f s40 164 168 162 160 165 ; end ;SG DONE ; 40 END HUNGER END GEORGE 07/06/96 ; INVERT ;GEORGE 07/07/93 Tbl2_Macro202: ;SG DONE ;INVERT DW 164 ;64 DW 00 ;end Tbl2_Macro203: DW DW DW 00 ;$G DOME 164 ;64 169 ; end Tbl2_Nacro204: DW DW DW DW DW DW 00 Tbl2_Macro205; DW DW DW 0 0 Tbl2_Macro206; DW DW DW 0Q ; £G DONE 164 ; 64 lo8 ;40 174 166 175 ; end ;EG DONE 164 :64 176 ; end ;SG DONE IBS 177 ; end Tbl2_Macro207: DW DW DW 00 ;SG DONE 186 178 ; end Tbl2_Macro208: DW DW DW ;SG DONE 170 177 177 A-in 00 ; end A-m DW DO ; end Tbl2_Macro218: ;SG DONE dw 164 ;64 DW 183 DW 164 ;64 DW 00 ;end Tbl2_Macro219; ;SG DONE DW 164 ;64 DW 170 DW 170 DW 00 ; end Tbl2_Macro220; ;SG DONE DW 171 DW 179 DW 1B0 00 ; end Tbl2_Mocrc221: ;SG DONE DW 171 DW 181 DW 180 DW OG ; end Tbl2_Macro222s ;SG DONE DW 171 DW 179 DW 184 DW 163 i 63 DW 00 ; end Tbl2j4acro2 23: ;SG DONE DW 171 mRrl 181 DW 185 DW 00 ; end Tbl2_Macro2 24 : i$G DONE DW 164 ?64 DW 179 DW 186 DW 00 ; end Tbl2_Matro225: ;$G DONE DW 164 ;64 DW 1B1 DW 186 DW 00 ; end Tbl2_t$ficro22c ; iSG DONE dw 164 ;64 DW 1S1 DW 185 DW 00 ; end Tbl2_Macro227: ; SG DONE DW 164 ;64 DW 181 A-173 00 ;63 BW DW DW 00 TbI2_Kacro22fl: m m m DW 00 184 163 ; end ;SG DONE 164 ;64 179 187 ; end Tbl2_,M*cro229; dw m DW DW 00 ;SG DONE 164 ;64 181 137 ; end Tbl2_Macro230: DW DW DW DW 00 ' t SG DONE 172 158 178 ; end Tbl2_Macro231: DW DW dw DW 00 Tbl 2__Mac;ro2 3 2 : DW DW DW 00 ;SG DONE 164 ;64 1B1 189 ; end ;SG DOJJE 172 175 ; end Tbl2_Macro233: DW DW DW 00 ;SG DONE 172 183 ; end TbI2_Macro234 r DW DW DW DW 00 Tbl2_Macro235: DW DW 00 ;SG DONE 172 172 164 ;64 ; end ;SG DONE 173 ; end Tbl2jHacro236: DW DW 00 iSG DONE 190 j end Tbl2_Macro237: m DW 00 ;SQ DONE 191 i end Tbl2„Macro238: DW DW 00 ; SG DONE 192 ; end ;PND GEORGE 07/07/98 ; END INVERT ;GEORGE 07/07/98 ; BACK Tbl2_Macro239 ; ■ BACKSG ; SGDON*' DW 193 DW 193 DW 00 fend Tbl2_Macrc2 4 0; ;SGDONE dw 193 DW 194 DW 195 DW 00 i&nd Tbl2_Macro2 41: ;SGDONE DW 193 DW 196 DW 195 DW 00 ;©nd Tbl2_Macro242: ;SGDONE DW 193 DW 194 dw 197 DW 00 ;end Tbl2_Macro243; jSGMNE DW 193 DW 19 6 DW 197 DW 00 ;end Tbl2_>!acro244 i ; SGDONE DW 198 DW 19 9 DW 200 DW 2 01 DW 00 ;end Tb12_Macr o2 4 5: ;SGDONE DW 198 DW 19 9 DW 202 DW 201 DW 00 ;end Tbl2_Nacro24 6 t ;SGDGNE DW 198 DW 19 9 DW 200 DW 184 ;14 0 ;212 DW 00 fend Tbl2_Nacro247 j ;SGDOME DW 198 DW 199 DW 202 DW 184 ?148 <212 DW 00 ;end A-175 ;SGDONE Tbl2_M*cro248; DW DW DW 00 Tbl2„M*cro249: DW DW DW DW 00 Tbl 2 Jtecro 250 ; DW DW DW DW DW DW 00 Tbl 2 _M 4 cro 251 : DW DW DW DW DW DW 00 Tbl2_Kacro252: DW DW DW DW DW DW 00 Tb 12_Macro2 5 3: DW DW DW DW Tb12„Ma ctq 254r dw DW PW DW DW DW 00 i Tbl2_Mac:tQ255 : DW DW m DW 00 TbI3_Macro25Si DW DW DW 198 19B ; end ;SGDONE 198 203 204 fend ;SGDONE 198 205 206 207 204 ; end ; SGDONE 195 205 208 233 204 ; end t SGDONE 198 205 206 233 204 fend ;SGDONE 198 209 210 0 0 ;end ;SGDONE 198 209 21 1 212 213 ; end ;SGDONE 198 209 214 f end ;SGDONE 196 215 216 A-I76 ; end DW DW Tbi3_Macro257: DW DW DW DW DW 00 Tbl3_Kacro25S: DW DW DW DW DW DW DW 00 Tbl 3_jMacrc2 59: DW DW DW DW DW ow DW Tb13_KacrO2 6 0: DW DW DW DW DW DW DW 00 Tbl3_Macro261i DW’ DW DW 00 Tbi3_Macro262: DW DW DW DW 00 Tbl3„Macro263: DW DW DW DW 00 TbI3„Macro264: DW DW DW DW 217 00 ; SGDQNE 190 215 216 216 ; end ; SGDONE 2X9 220 209 217 199 234 } end jSGDOME 219 220 209 205 217 234 00 ;end ;SGDQtfE 219 220 209 205 216 234 ; end ; SGDDNE 221 222 ; end ;5GDCNE 221 223 222 ; end ;SGDOKE 198 224 199 ;end ; SGDQNE 190 224 205 ; end A-177 00 Tbl3_Maero26S: DW 198 DW 225 DW 205 DW 00 ;d Tbl3_Macro2 0: DW 19H DW 1^ DW 205 DW 00 ;end Tbl3„Macro27l; DW 19S DW 196 DW 205 DW 00 Tbl3_Macro272: DW 198 DW 235 DW 231 DW 199 DW 00 ; tmd Tbl3j4acro273; DW 198 DW 235 DW 231 DW 205 DW 00 ?©nd 1 Tbl3^Macro274 i ;SGDONE ;SGDONE ;SGDONE ;SGDONE ;SGDONE ;SGDONE ;SGDONE ;SGDONE ;SGDONE ;SGDONF A-m 00 m DW DW DW 198 235 232 205 ; end Tbl3_Macro275: ;SGDONE DW 198 DW 236 DW 232 DW 205 DW 00 send ;END GEORGE 07/07/98 ;END BACK GEORGE 07/08/98 SICK Tbl 3_M&cro27 6 : ; £J DQ®*E ;ST^K3 DW 237 DW 168 ; 13 5 ;4Q DW 117 ; 4 1 DW 238 DW 00 ;end Tbl3_Kacro277: DW DW DW DW DW 00 Tb33„Macro278: DW DW DW DW DW 00 Tbl3_Macro279; DW m DW DW DW 70 Tbl3„Mncro280; ;SG DONE DW 237 DW 241 DW CO tend Tbl3_Macro28l: ;SG DONE DW 237 DW 242 DW 00 ;end Tbl3JMacrro282 : ;SG DONE DW 237 DW 243 ;SG DONE 237 168 ,-135 ; £C 239 238 ; end ;SG DONE 237 168 ;135 ;4 0 117 ;41 240 ; end ;SG DONE 237 53 } 45 239 24 0 ; end A-m 00 DW DW 244 ; end i'bl3_Xacro283; ;SG DONE DW 250 DM 117 ;41 DW 245 DW 00 ;end Tbl3_Macro2B4: ;SG DONE DW 250 DW 239 DW 245 DW 00 ; end Tbl3JWacro285: ;SG DONE DW 250 DW 239 DW 182 ;51 DW 00 ;end Tbl3_J4acro236; ; SG DONE DW 237 DW 246 DW 250 DW 00 ;end Tbl 3 _Macro 2 B 7 ; ;SG DONE DW 237 DW 247 DW 250 DW 00 ;end Tbl 3 _Macro 288 : ; SO DONE DW 237 DW 0 0 ; end i fb! 3 _Hacro 289 : ;SG DONE DW 237 DW 248 DW 250 DW 00 ■ tti&d Tbl3_Hacro290; ; 3G OONE DW 237 DW 249 DW 00 ;end Tbl3jNacro291; ;SG DONE DW 250 DW 250 DW 00 i end . ibl3JMacro292; ;SG DONE DW 250 DW 248 A-180 . v ' *Sriir" ;GEORGE 07/08/98 ;LIGHT Tbl3_Macro293 t DW 251 DW 00 ;Tbll_Macro294: ; DW 263 ; DW 00 Tb13_Macro2 94: DW 252 DW 00 Tbl3_Macro29 5: DW 253 DW 00 Tbl3_Mflciro2&6 : DW 254 DW 00 Tbl3_Macro297: DW 255 DW 00 Tbl3_M«cro298: DW 256 DW 00 ;end Tbl3„Macro299: DW 257 DW 00 Tbl3_«acro300: DW 258 DW 00 ; end Tbl3_Macro3 01: DW 259 DW 00 ;end Tbl3_Macro302: DW 260 DW 00 i end Tbl3_Hacro303: XM 261 DW GO ;end Tbl3_Macro304: DW 262 DW 00 ;end Tbl 3 __M*ero305 : DW 263 DW 00 ?end Tbl3_Macro306i DW 264 ;end RB ;end RB ;end RB ;end RB iend RB ;end RB ; end A-m DW 00 ;end Tbl3_Macro307; DW 265 DW 00 ;and ;EHD GEORGE 07/08/98 ;END LIGHT ;GEORGE 07/08/9B ; DARK Tbl3_>Iacro308: DW 266 DW 00 ;end Tbl3_Hacro309j DW 267 DW 00 ;end Tbl3_Macro310i DW 268 DW 00 ;end Tbl3_«acro311: DW 269 DW 00 ;end t Tbl3_Macro3J2: DW 270 DW 00 ; end Tbl3_Hacro313: DW 271 DW 00 ; end Tbl3„tfacro314: DW 272 DW 00 ; end i Tbl3_JMacro3l5; DW 273 DW 00 ; end # Tbl3„Macro316: DW 274 DW 00 ; end Tbl3 w Kacr&3l7: DW 275 DW 00 j end Tbl3_Macrc318: DW 276 DW 00 ;end Tbl3_Hacjro319: DW 277 DW 00 ;end Tbl3„Hacro320; DW 278 A-182 DW 00 end Tbl3_Kacro321: DW 279 DW 00 ;end Tbl3,J*acra322: DW 280 DW 00 ;end Tbl3.Jtecio323 : DW 262 DW 0 0 ; end Tbl3_Hacro324: DW 282 DW 00 ; Tbl3_Jrtacro325 s DW 283 DW 00 ;end Tbl3_Macrt>326 : DW 284 DW 00 ;end Tbl3_Macro327; DW 285 DW 00 ;end Tbl3_Macro328i DW 286 DW 00 ;end Tbl3_Macro329; DW 287 DW 00 rend Tbl3_Macro330; DW 288 DW 00 ;end Tb _tfacro33l: DW 289 DW G O ; end ;END DARK ;END GEORGE 07/08/98 l GEORGE 07/08/98 l SOUND Tbl3j*scro332 : DW 290 ;S1-A1/S9-A1/SX-A2 SOUND js DW 0 0 ; end Tbl3„tfacrQ333! DW 291 ;S2~A1/S1Q-A1/S2-A2 SOUND je DW 00 ;end Tbl3_Hacro334: A-183 00 ;33-Al/Sll-Al SOUND js DW DW 00 ibl3_Mttcro335: DW DW 00 Tbl3jWacro336: DW DW DW 00 ? Tbl3_Macro337i DW DW 00 Tbl3_Macro3 38: DW DW DW 00 Tbl3_}l^cro33S : DW DW 00 ? Tbl 3_Macro34G; DW DW 00 Tbl3„Macro34l: DW DW 00 TblJ_Kacro342: DW DW DW 00 292 ; end 293 ;S4-JU/S12-A1 SOUND js ; end 310 294 ;S5-A1/S13-A1 SOUND (with say/m2J ja : end 295 ;S6-A1/S14 ~AI SOUND js fend 310 296 ;S7-A1/S15-A1 SOUND (with say/m2» js ;end 297 ;S8-A1/£16~A1 SOUND js ; end 296 ;S3-A2 SOUND js ; end 299 ;S4-A2 SOUND js ;end 310 300 ;55-A2 SOUND (with say/m2 ) js ; end Tbl3j*acro343 : DW DW m oo Tbl3_Macro3 44: DW DW 00 f TbI3_Macro345: DW DW , J Tbl3_Nacro346: DW DW l Tbl3_Maero347: DW DW DW 00 310 301 ;£7-A2 SOUND [with say/m2j js ; end 302 ;S8-A2 SOUND js ; end 303 ;S3’A3 SOUND js ? end 304 ;S4-A3 SOUND js 0 0 ;end 310 305 1 end 00 ;S7 A3 SOUND (with Say/ra2) js Tbl3„_Macro34fl : W 306 ;S1-A4 SOUND js DW 00 ; end Tbl3_Macro349i DW 307 ;S3-A4 SOUND js DW 00 ;end Tbl3_Nacro350i DW 308 ;S6-A4 SOUND js DW 00 ;end Tbl3_Macro3Sli DW 309 ;S8“A4 SOUND js DW 00 ;end END GEORGE 07/08/98 END SOUND TILT GEORGE 07/09/93 Tbl3_MAcro352: DW DW 00 ; end 310 ;S1 A1 TILT/S4 A1 TILT js Tbl3_M*crn3S3; DW 311 DW 00 ;end :S2 A1 TILT js Tbl3_Macro354: DW 312 DW 00 ;end ;S3 Al TILT js Tbl3_Macro355; DW 313 DW 00 ;end ;S5 Al TILT js Tbl3_Macro356 : DW 314 DW 00 ;end ;S6 Al TILT js Tbl3_Macro3 57: DW 315 DW QO ;end ; S7 Al TILT js Tbl3_Macro35Ss DW 313 m 316 DW 00 ;end ;S8 Al TILT js Tb!3_Mficro3$9; DW 317 DW 00 ; end ;S9 Al TILT js Tbl3_Macro360? DW 318 DW 00 ;3 87 : DW 334 DW 345 A-1S7 Tbl4_Hacro388: DW 346 DW 00 ;end Tbl4j429: ;eeq6 ir age3 ;seq7,S ir age 3 ;seq9 ir ag©3 ;seql1 ir age 3 ;seql3,14 ir age3 ;seql 5 ir age3 jseql r 2 ( 3,4 ( 5 ir age4 ;seq£ ir age4 ;seq7,8 ir aqe4 ;seq9 ir age4 ,'seqlO ir age4 ;seq!l ir age4 ;seql2 ir age4 ;seq!4 ir age4 DW 389 ;eeql5 ir age4 DW 390 DW 00 ;end ;END GEORGE ;END IR ; START FURRY SAYS DMH Tbl4_Macro430: DM SO ; TICKLE DW 00 ;end Tbl4 J*acro431: DW 196 ; PET DW 00 iend Tbl4_Macro432 j DW 71 ; SOUND DW 00 iend Tbl4_Macro433; EM 391 ; LIGHT DW 00 ;end Tbl4_Macro434: DW 196 ; soft purr DW 00 ;end Tbl4„Macro435; DW 392 ; no light DW 00 ;end Thl4_Macro43 6: DW 393 ; loud sound DW DO ;enri Tbl4_Macro437: DW 115 ; burp {hide and seek} DW 00 ;end Tbl4_Macrc438; DW 116 ; sigh (hide and :eek) DW 00 ;end Tbl4_Macro4 39 : ; win sound {dinh} dw 376 dw 376 dw 367 DW 00 ?end ; END FURBY SAYS DNH ; start diagnostic tables Tbl4„Nacro44Q: ; Start diagnostic beeps DW 400 DW 00 ;end ; Tbl4_Macro441s ; press key beep DW 401 DW 00 jend A-191 ; pass beep Tbl4_Kacro442* DW 402 DW 00 ( etid Tbl4_Maero443: DW 403 DW 00 f end TbI4_Maere444; DW 404 DW 00 ;end i Tbl4_Macro44 5i DW 405 DW 00 ;end Tbl4_Macro446: DW 406 DW 00 f end Tbl4_Macro447: DW 407 DW 00 ;end Tbl4_Macro448: DW 408 DW 00 ;end Tbl4_Macro449: DW 409 DW 00 ;end Tbl4_Macrc450: DW 410 DW 00 ;end ; end of diagues tic tables dn\h Tbl4_Macro451; DW DW 00 117 ; end HIDE AND SEEK SOUND DHM i Tbl4„Macro452: DW DW 00 llfi ;end HIDE AND SEEK SOUND DHM Tbl4_Macro453; DW 399 delay DW 395 ME DHM XM DW 00 no ; end NAME “KOKC* DMH Tbl4^acro454 : DW 399 delay DW 395 ME DHM DW DW 00 396 ; end NAME "MEME* DMH Tbl4_Macro455: ; fail beep ; speaker test tone ; motor cal t feedl ; feed: ; light ; sound ; go to sleep A-m DW 399 delay DW 395 ME DW 112 NAME *E-DAY* DMH DW 00 ; end Tbl4_Macro45€: DW 399 ; delay DW 395 ME DW 397 NAME "DO-MOH” DMH DW 00 end Tbl4_Macro457: DW 399 ; delay DM 395 ; ME DW 114 NAME 'TO-TYE* DMH DW 00 ; end Tbl4_Macro45B: DW 399 ; delay DW 395 r ME DW 117 j NAME "BOO' 1 DHM DW 00 ; end Tbl4„Macro459; DW 399 delay DW 395 ME DW 396 NAME "Ton-LOG* DHM DW 00 ; end Tbl4_Macro460: DW 399 delay DW 395 ME DW 120 NAME "A-TAY H DHM DW 00 ; end Tbl4_Macro461: DW 399 delay DW 395 ME DW 131 NAME "WAY-LGH* DMH DW 00 ; end TblOfaero462; DW 399 delay DW 395 ME DW 143 NAME *U~TYE S DW 00 Tbl4_M«cro463: DW 399 ; delay DW 395 ; ME DW 145 ; NAME ’■A-LOH" DMH DW 00 ; end Tbl4 m Macro464: DW 399 ; delay DW 395 ; ME DW 152 ; NAME -KA" DMH DW 00 ; end 7 Tbl4^Macro4 6 5 : DW 399 ; delay A-193 dw 395 ME DW 166 kakf -dah- dmh DW 0Q ; -nd Tbl4_Macro466: DW 399 delay DW 3 . . ME DW 175 NAME "BQH-BAY’ EMH DW 00 ; end TbI4_>laerc467: DW 399 delay * , * 395 ME DW 177 NAME "NAH-EAH- DMH DW 00 ; end Tbl4_Macro468: DW 129 dodle do, Tie love you DW 129 DW 151 DW 00 i end Tbl4_Kacro469; SING A SONG DMH DW 219 DW 220 ; DW 219 ; Hr 220 ; dw 219 ; DW 220 DW 00 ; end Tbl4_Ma:ra 4 7 0 : B'JKB ATTACK DMH DW 115 DW 115 DW 115 DW 115 DW 115 DW us DW •5 DW 115 DW 00 ; end Tbl4_Macro47 1: WIN SOUND DMH DW 313 DW 336 DW 376 DW 00 ; end i Tbl4_Macro472: DW 46 DW 00 t end Fbl4_Macro473; ; HE DONE (DHH) DW 53 DW 123 DW 00 ;end I Tbl4„Macro474: ; LISTEN ME {DMHi DW 394 A-m Tbl4 Jtocro47 5: DW 411 IM 00 ; end i Tbl4 ,j4acro476: DW 398 delay DW 395 WE DW 136 NAME * LOO-LOO # DMH DW 00 ; end Tbl4_M«cro477; DW 399 delay DW 393 ME DW 194 NAME “&H-KAY* DMH DW 00 ; end Tbl4_Macro478: DW 399 delay dw 395 ML DW 201 NAME "MOO-LOQ" DMK DW 00 ;end i Tbl4_Macrc479; DW 399 delay DW 395 ME DW 20 8 ME H MAY-MAY K DW 00 ; end 1 Tbl4_HAcro480i DW 399 delay DW 395 ME DW 224 NAME “KAY-LAH" DMH DW 00 ; end Tbl4._Macro481: DW 399 delay DW 395 ME DW 223 DAH-NOH-LAH DW GO ; end Tbl4_Macro4B2: DW 399 delay DW 395 HE DW 398 NAME * 1 JH^LQQ-KAH ‘ DMH DW 152 DW 00 ; end Tbl4_Macro483: DW 399 ; delay DW 395 ; ME DW 152 ; KA-DA DW 166 DW 00 ; end f Tbl4^Hacro4 8 4: DW 399 ; de1ay DW 395 ; ME DW 224 i MAY-LAH-KA EM 152 DW 0 G ; end r i bl 4_Maero4 S 5 ; DW 4 DW 00 tend ; Tbl4 ^Macro4 8 5; DW 4 DW 00 ?end Tbl4_Macro4B7t DW DW OG ; end Tfol4_Maero40$: DW 4 DW CO ;end TblOtaero4S9: DW 4 DW 00 ;end Tbl4_tfacro49G: DW 4 DW 00 ; end Tbl4_M&cro49t: DW 4 DW 00 ;end Tbl4„M«cro492: DW 4 DW 00 ; end Tbl4_M *cro493: DW 4 DW PC ;end Tbl4_Macro494: DW 4 DW 0 0 ; end Tbl4JKacro495: dw 4 DW 00 ■end Tbl4_Macro496: DW 4 DW 00 ; &nd Tbl4_Macro497i DW 4 DW 00 ;end Tbl4_.KAcro498i DW 4 DW 00 j end A-196 ; end Tbl4_M&cro499: DW 4 DW DO Tbl4_Macra500: DW 4 DW 00 ,- end Tbl4_Macro501: DW 4 DW 00 ;end Tbl4_Maero502: DW 4 DW 00 ;end Tbl4_HacroS03 t DW 4 DW 00 ;&nd i Tbl4_MacroSQ4: DW 4 DW 00 rend Tbl4„Macro505: DW 4 DW 00 ;end i Tbl4_Macro506: DW 4 DW 00 ;end Tbl4Jiacro507: DW 4 DW 00 ;end Tbl4_Macro508; DW 4 DW 00 rend ; Tbl4_Macro509i DW 4 DW 00 rend Tbl 4„Hacro510 t DW 4 DW 00 ;end ; Tbl4JKacro511; DW 4 DW 00 ; end SAYS ENT pointer tables fl28 max per table- 255 tables max) $pch_grpli DW Tbll_sayOOO DW Tbll„sa/0 01„Tbll_say00 2,Tbli_say0 0 3 , Tbll_sayQ 04, Tb 11_say0 0 5 DW Tfc l l_say0 0 ft,Tb1l_say0 07 H Tbll_say0 08 t Tbll_say0 09 * Tbll_say01C DW Tbll_say0 21,Tbl1_say01 2 ,Tbl1_say0 1 3 < Tbll_s ayO14 > Tbll_sayO15 DW Tb11_say G16,TbIl_s ayO17.Tbll_say018 > Tbll_sayO1f,TbIl_say 2 0 DW Tbl I_say0 21, Tbl l„say(J22, Tbl l_eay02 3, Tbl l_sayO 2 4, Tbl 1 _»ayC 25 DW Tbll_say02 6 , Tbll_say£27,Tbll_®ayQ28 f Tbll„say029,Tbll_sayO 3G DW TLll_say031 ( Tbll_say032 J Tbll_say033 f Tbll_say034,Tbll_say035 DW Tbll_say03 6 t Tbll_sayO 37,Tbll_sayC 3 8 , Tbll_say039 , Tbll_say040 DW Tbll_say04l,Tbll_say04 2.Tbl. T sayt43 4 Tbll^sayG44 *Tbll_say04 5 DW Tbl l„.3ay04 6 , Tbl l_say047 /Tbl l_say04 B , Tbl l_say04 9 , Tbll_say05Q DW Tbll_sayD51 t Tl l_say052,Tbll_**y053,Tbll_sayO54 f Tbll_say055 DW Tb1l_say0 56*Tbll_$ay 7,Tbll_say058 f Tbll_s*y0S9 ( Tbl1 _b ay060 DW Tbll_say061,Tbll_sa^062,Tbll„say063, T _sayG64,Tbll„say065 DW Tbll_aay0 66 , Tbll_say067 ,Tbll_BayQ68,Tbll„say0 69 , Tbil„$ayG70 DW Tbll_say071,Tbll_sayG72,Tbll_say073 f Tbll_say074 r Tbil_eayG75 DW Tbl1_say0 7 6 , Tbll_aay07 7,Tb11_s ayO 7 8 , Tbll_say07 9,Tbl1_sayO 8 0 DW Tbll^cayOS1,Tbll_sayO 82,Tbll^sayOS 3 f Tbll_say084 # Tbll^sayC S 5 DW Tbll_sayO86 f Tbl1_say087 f Tbll_sayOS8 ( Tb1l„say089,Tbll_say090 DW Tbll_say091,Tbll_say092 f TbU_say093,Tbll_sayQ94*Tbll_say095 DW Tbll„say096 t Tbl l_say097 , Tbl l_say09fl, Tbl l_sayO 99 DW Tbll_saylOO,Tbll_sayl01,Tbll_sayl02,Tbll_saylO3,Tbll^saylOi DW Tbll_sayl05.Tbll_sayl06,Tbll_sayl07 I Tbn_aaylOe ,Tbll_s«ylG9 Dfo Tbll_sayi !G ,Tbll_sayll 1,Tbli_sayll2 , Tbll_sayll3 , Tb!l_sayll4 EM Tbll_£ay115 t Tbll_aayl16 # Tbll^say117 ( Tbll_sayl18,Tbll_sayl19 DW Tbll„aayl20,Tbll_sayl21,Tbll_&ayl22 I TbH_sayl2i f TbU_sayl24 DW Tbll_»ayl2 5 4 Tbll_s ay12 6,Tbll_s«yi27 t Spch_grp2 s DW Tbl2_sayl28 DW Tbl2_say129 , Tbl2_eayl3Q,Tbl2_sayl31.TbI2_sayl32 , Tbl2_sayl33 DW Tbl2_sayl34 r Tbl2_sayl35,Tbl2„3ayl36,Tbl2_sayl37,Tbl2_sayl38 DW Tbl2_sayl39■Tbl2„s^/14G , Tbl2 w sayl41 ( Tbl2_say142.Tbl2„sayl43 m Tbl2_sayl44,Tbl2_sayl45.Tbl2_„ssayl46,Tbl2_3fflyl47,Tbl2_5ayl40 DW Tbl2_say14 9 * Tbl2_sayl50,Tbl2_say151 * Tbl2_s ay15 2,Tbl2_say 15 3 DW Tbl2_say15 4,Tbl2_say155 # Tbl2_s«yl56 *Tbl2_say157,Tbl2_s ay15 S DW Tbl2_sayl59,Tbl2„sayl60,Tbl2„aayl61,Tbl2_say^ *2,Tbl2_jsayl63 DW Tbl2_s*y164,Tbl2_sayl65,Tbl2„sayl66.Tbl2_sa .fa ,Tbl2_sayl68 DW Tbl2„nayl69,Tbl2_sayl70 # Tbl2_say.71, Tbl2„flay172 ,Tbl2_sayl73 DW Tbl2_eayl74,Tbl2^sayl75 ( Tbl2^sayl76,Tbl2_sayl77,Tbl2„sayl78 DW Tbl2_aayl7 9 , Tbl2_say1 80 ,Tbl2_sayl61,Tbl2_say1fi2,Tbl2_sayl83 DW Tbl2^saylB4,Tbl2_Bayl85,Tbl2_sayl86,Tbl2_saylfl7,Tbl2_sayl88 DW Tbl2^say 139,Tbl2 _say190„Tbl2_sayl91 P Tbl2„say192.Tbl2_say19 3 DW Tbl2_sayl94,Tbl2_sayl95,Tbl2_sayl96,Tbl2„sayl97 ( Tbl2_sayl9& DW Tbl2_sayl39 p Tbl2__say200 , Tbl2_aay201 , Tbl 2„say202 H Tbl2_say203 DW Tbl2_say204 p Tbl2_say2Q5,Tbl2_say206 ,Tbl2_say207,Tbl2_say203 DW Tbi2_say2Q9 ( Tbl2„say210 ( Tbl2_say2l l t Tbl2_&*y2l2 ( Tbl2_say213 DW Tbl2_say214,Tbl2_Bay2l5,Tbl2_Eay2l6,Tbl2_say21.,Tbl2_say21S DW Tbl2_s ay219 , Tbl2_Eay2 2 0 r Tbl2_aay2 21 *Tbl2_say222,Tbl2_say223 DW Tbl2_say224,Tbl2_eay225,Tbl2_eay226,Tbl2_say227* Tbl2_say226 DW Tbl2„say229,Tbl2^say230,Tbl2_say231,Tbl2_say232,Tbl2^say233 DW Tbl2_say2 3 4 , Tbl2_say2 3 5 ,Tbl2_&ay2 3 6,Tb12_say2 3 7 r Tbl2_say2 3 6 LW Tbl 2_say233 , Tbl2_sav24Q , Tbl 2_say241, TbI2_say242, Tbl2_say24 3 DW Tbl2 - say244 f Tbl2_Bty24 5,Tbl2_fiay246,Tbl2_say247 p Tbl2_&ay248 DW Tbl2_say249 r Tbl2_s^y250 ,Tbl2_say2 51, Tbl2„say252 p Tbl2_say253 DW Tbl2_say254, Tbl2_**y255 Spch_grp3: DW Tbl3„say256 DW Tbl3_say2 57 r Tbl3_£ay258 p Tbl3„say259,Tbl3_say260 P Tbl3_say261 DW Tbl3„say262 ( Tbl3_say263,TblJ_say2 64 P Tbl3„say2 65,Tbl3„say266 DW Tbl3„say267 r Tbl3_say268,Tbl3_say269,Tbl3_say270 ,Tbl3_say271 Dv, Tbl 3_say27 2 r Tbl3_say273 r Tbl3_s*y274 , Tbl3_say27 5 P Tbl 3_say276 DW Tbl3_say277,Tbl3_say278,Tbl3_say27 9 , Tbl7_say2B0.Tbl1 ay2fil DW Tbl3_say2S2,Tbl3_say263 * Tbl3_say2S4,Tbl3_say285 p Tbl3_ ay2£6 DW Tbl3_say287,Tbl3_say2SS,Tbl3_say289,Tbl3_aay290 P Tbl3_say291 DW Tbl3„say2 9 2 ,Tbl3_say2 9 3 , Tbl3 _say2 94 P Tb13_eay2 9 5 F Tb13 ^say2 9 6 DW Tbl3_say297,Tbl3_say298,Tbl3_aay299,Tbl3_say300,Tbl3„s*y301 DW Tbl3_say302,Tbl3 m say303,Tbl3^say304,TbI3„eay305 H Tbl3_say306 DW r Tbl3_say307 # Tbl3_say30B f Tbl3_say309 f Tbl3„say3l0,rbl3_Eay31^ DW Tbl3_say 312,Tbl3„say313,Tb13_say314,Tbl3_aay315 p Tbl3_say316 DW Tbl3_say3l7,Tbl3_»ay3l6,Tbl3„say319 P Tbl3„aay32C F Tbl3_say321 DW Tbl3_say322,Tbl3_say323 # Tbl3_say324 f Tbl3_say325 r l. 13_say3?r DW Tbl3_say327 , Tbl3_say326.Tbl3 ^ay329,Tbl3_say330,Tbl3_s& 331 DW Tbl3_say332 P Tbl3_say333 . Tbl ;ay334 ,Tbl3_say335 m Tbl3_aay337 r Tbl3_say330 p Tbl say339,Tbl3_say340 # TbI3_say341 DW Tbl3„Eay342 ( Tbl3_say343,Tbi _say344,Tbl3_say345 # Tbl3_say346 DW Tbl3_say347,Tbl3_Eay348,Tbl3_aay349 f Tbl3_say350,Tbl3_say35l DW Tbl3_eay352 P Tbl3_say353,Tbl3_say354,Tbl3„say355 # Tbl3_say3 56 DW Tbl3_say357 p Tbl3_aay358.Tbl3_say359,Tbl3_say360,Tbl3_say3rI DW Tbl3 aay362,Tbl3_say363,Tbl3_aay3€4,Tbl3_say365,Tb!3_eay3£5 DW Tbl3_eay367,Tbl3_eay368 ( Tbl3„say369 t Tbl3_say370 p Tbl3„cay3^1 DW Tbl3_say372 t Tbl3_say373 r Tbl3_say374 t Tbl3_say375 H Tbl3_say37 6 Utf Tbl3„say377,Tbl3_&ay378,Tbl3_say37 9 r rbl3„say380 P Tbl3_Eay3Sl A-m EM Tbl3_««yJ3 2,Tbl3_say38 3 * Spch^grpA: DW Tbl4_jsay3S4 DW Tbl 4 _say3 8 5, Tbl 4„a«y3 8 6, Tbl4_say3 67, Tb 14_say3 88, Tbl4_say3 8 9 DW Tbl4_say390 , Tbl4^say39l, Tbl4„eay392, Tbl4_say393 „ Tbl4_say394 DW Tbl4_say395,Tbl4_Bay39 6,Tbl4_jifly397 J Tbl4_say398 # Tbl4_say399 DW Tbl 4 _say4 0 0, Tbl 4__say401, Tbl 4„say402, Tbl4_say4 0 3 , Tbl4_say4 04 DW Tbl4_say405 , Tbl 4_eay406 ( Tbl4_say407 p Tbl4_say40S, Thl4_say409 DW Tbl4_say410 l Tbl4_Bay411 P Tbl4_say412,Tbl4_^ay413 # Tbl4„say414 DW Tbl4_say4l5, Tbl4_say416 , Tbl4_say417 , Tbl4_ h sny418 TbI4_say4l9 U*' Tbl 4_say ^0 , Tbl4_say421 p Tbl4_say422 , Tbl4_say423 , Tbl4_say424 Dv Tbl4_say*25 , Tbl4_say426 r Tbl4_say427 ,Tbl4__say428,Tbl4_say429 DW Tbl4_say4 30,ThI4_say431,Tbl4_say432 r Tbl4_say433 p Tbl4_say434 DW Tb14 _a ay4 3 5,Tb14_say4 3 6,Tbl4^s ay4 3 7, m b!4_s ay4 3 8,Tbl4_say4 3 9 DW Tbl4_soy4 4 0 , Tbl4__say441, Tbl 4_say442 # Tbl4__say4 4 3 . Tbl 4_say444 DW Tbl 4_say4 4 5, Tb 14_$ay4 4 6 , Tbl4„say4 47 T Tb 14_say4 4 8 , Tbl 4 _ say4 4 9 DW Tbl4_say4 5 0.Tbl4_s ay4 51,Tb! _eay432,Tbl4_say4S3,Tbl4_say454 DW Tbl4_say455 , Tbl4_say456, Tbl4„say4 57 p Tbl4_say458, Tbl4__say4 59 DW Tbl 4 _ say4 6 0 , Tbl 4„say4 61, Tbl4„say4 6 2 p Tbl 4_say4 6 3 , Tbl 4_say4 6 4 DW Tbl4_say465, Tbl4_say466 p Tbl4_say467 r Tbl4_say468,Tbl4_say469 DW Tbl4,say470,Tbl4„Bay4?l, Tbl4_say472,Tbl4^say473 p Tbl4_s*y4?4 DW Tbl4_stty47&, Tbl4_say476 P Tbl4 m ,say477 , Tbl4_say 478, Tbl4_say479 DW Tbl4_&ay480,Tbl4_say4Sl,Tbl4_say482,Tbl4„eay4S3,Tbl4_say4S4 DW Tbl4_say485,Tbl4_say486 p Tbl4_say487,Tbl4„say4 88,Tbl4_say48S DW Tbl4_say4 90 P Tbl4_say491, Tbl4_-uy492 # Tbl4„say4 93,Tbl4_say494 DW Tbl4„sa/4 95 H Tbl4_say496 , Tbl4_say497,Tbl 4_sa,y499 f Tbl4„say4 99 DW Tbl4.sayBOO,Tbl4_say501,Tbl4_sayS02 ,Tbl4_say50 3,7hl4_say50 4 DW Tbl4_say5Q5 H Tbl4_saySO6,Tbl4_say507 , Tbl4_say508 p f 'hl4_£ay509 DW Tbl4„say5l0,Tbl4_say5U ; ALL SPEECH SAYSENT START HERE ii Saysent groups for Tbl l The first line of each group is the speech speed conumnd. This is a number from 40 - 55 wh^re 46 is stand d speed The next line is PITCH control which works as follows: Actual numeric value for TI pitch control bit 7 set = subtract value from current course value clr * add value to current cour:& value bit 6 r = select music pitch table clr = select normal speech pitch ".able bit 0-5 value to change course value (no change » 07 ;hi voice iS f is very squeceeeke} (8F=143) ,'one step higher than norrysl use range 61-SF (129-143) ; normal voice ;one step lower than normal jlo voice ( very low* use range 01 (01-47) ; A math routine in 'say_0* converts the value for + or - ; if <80 then subtracts from 80 to get the minus version of □ ; ie, if number is 70 then TI gets 10 {which is -10) ; If number is 80 or > 80 then get sent literal as positive, ; NOTE! MAX POSITIVE IS SB ; MAX NEGATIVE is 2F t BOh - 2Fh or 51h) ; 8Bh is hi voice (8£ is very squeeeeeke) ; 2Fh lo voice { very low} ; When entering changes, 'Voice* holds the current pitch for Furby ; and it is modified by adding or subtracting a pitch change ::: t ex: Voice*B increases the pitch from the current voice by 8 ; ex: Voice-10 decreases the pitch from the current voice by 10 SFh 81h JO 01 2fh The next group of entries are the speech words, The last line is the terminator of 'FF r (BOTTOM) 1 is very fast 46 is average 255 is very slow ; DB 46 (speed of speech 1 ; DB 123 idc sound 123} ; DB 43 fdo sound 43) 1 DB FFU # i FITCH FROG RAMMING RANGE Voice+8 {highest) Voice-20 {lowest) # # Tbll_sa /Of J f DS 4 6 DB Voi ce DB 163 DB FFH ;GEORGE 07/03/93 Tbll^sayOOl: DB 4 6 ; s; #ech speed DB Vcice+8 DB 1 9,162 02,164,149 DB FFd * end ;dON START S£Ql AGEl ;DONE 1FRONT SEQl Tbll_say002: 52 ;speech speed Voice+B ;system pitch setting 117,59 ;DONE 1FRONT SEQ2 agel FFH rend Tbll_s*y003: DB DB DS DB 4 6 ?speech speed Voice-4 ;system pitch setting HB ; If ront seq3 - seq4-poxtl~SBQ7PART2 FFH t end Tbll__6ay004: DB DB DB DB 46 Voice 62,22,85 FFH ;end ;speech speed ;system pitch setting tl front seq3 par £2 Tbll^sayOG 5; DB DB DB DB 50 ;speech speed Voice+S ;system pitch setting 58,39 ;Ifront seq4 part 2 FFH ;end Tbll_say00 6: DB DB DB DB 46 ;speech speed Voice fpitch control 162,162,99,117 FFH f end ; seq5 agel front part of seq6 Tbll^ayO.OTi DB 55 ispeech speed DB Voicei 8 ;system pitch setting DB 156 ;seq6 agel front bach DB FFH ; erd 'QQB : DB 46 ;speech speed DB Voice ;pitch control 162,162,$9.10,39 FFH ;end ;£EQ7 FRONT AGEl ADD SAY 003 Tbll_say0D9: DB DB DB DB 46 ;speech speed Vo::e system pitch setting 99 99,145 FFH ;end ; SEQ3 FRONT A^El Tbll^sayOlO: DB DB DB DB 46 ;speech speed Voice ;system pitch setting 96 FFH ;end ;seq9 FRONT AGH1 Tbll_say011: DB 30 ;speech speed DB Voice*8 ;system pitch setting DB 96,165,165,165,129,149 DB FFH ;end ;seqlQ FRONT AGE1 ADD SAY20 Tbll_say012: A-202 ►ing sqll FRONT AOE1 ADD SAY20 DB 50 ;speech speed DB Voice ;system pitch *ting DB 136,165, 162.45 . eqll FRONT AGEl ADD SAY20 DB FFH ; end Tbll_aay€13: DB 58 ;speech speed DB Voice ;system pitc 1 setting DB i;0,136,117 fseql2 FRONT AGEl ADD SAV20 ON FRONTFART DB FFH ; end Tbll_SJay014 ; DB 60 ;sp DB Voice +8 t -xtch : et ing DB 145,162 ;seql3 FRONT AGEl ADD SAY22 DB FFH i end Tbll_s«y015: DB 46 ;speech speed DB Voice+8 :system pitch setting DB 156 ;seql4 tRONT AGEl DB FFH ; end Tbll_sayQ16: DB 46 ;speech speed DB Voice+7 ;system pitch setting DB 119,58 ;seql 5 FF T AGEl DB FFH j end Tbll_say0l7: DB 46 ;speech speed DB Voice :system pitch setting DB 37 ;seqXG FRONT AGEl BETWEEN 2(FAY20)ADDSAY3? DB FFH ; end TbU„say01S< DB 4 6 i speech speed DB Voice ;system pitch setting DB 123 7 SEQI 6 FRONT AGEl DB FFH ; end Tbll_say0l9i DB 46 ;speech speed DB Voice ;system pitch setting DB 118 ;SEQ1 FRONT AGE2 REPEAT 22 DB FFH ; end Tbll_s«y020: DB 46 ;speech speed DB Voice+7 ;system pitch setting DB 77,35 ;SEQ2 FRONT ADD 20 TO FRONT DB FFH ; end Tbll„say021; DB 46 ;speech speud DB Voice ;system pitch setting DB 39.39 :SEQ3AGE2 FRONT ATD OF29 AGEl DB FFH ;end Tbll_say022: DB 56 ; speech speed BB Voice*7 7 system pitch setting BB 156 7SEQ4 AGE2 FRONT BB FFH ; end Tbll„say023 ; DB 46 ; speech speed DB Voice+7 ; system pitch setting DB 6 1 162,22 7 SEQ4 AGE2 FRONT DB FFH ; end Tbll_say024: DB 46 ; speech speed DB Voice+7 7 system pitch setting DB 117(81,2 7 ,-SEGS AGE2 FRONT DB FFH ; end Tbll_sayQ25: DB 46 ; speech speed DB Voir ,-system pitch setting DB 59,35,46 ,164,77 ;S£Q6 AGE2 FRONT DB FFH 7 end Tbll_say026: DB 46 j speech sp&ed DB Voice*6 jsy^Lem pitch setting DB 99 ;SFQ 7 AGE2 FRONT PART 1 DS FFB ; end Tbll„sayG27: DB 46 7 speech speed DB Voice*7 ; system pitch setting DB 60,39,117 iSEQ 1 AGE2 FRONT PART 2 DS FFH lend Tbll_sayG2 r : DB 46 7 speech speed DB Voice system pitch setting DB 145 7 SEO 8 AGE2 FRONT say45(2 DB FFH ; end Tbll_say079 : DB 46 ; speech speed DB Voice+5 7 system pitch setting DB 149,162 ,162,164.149 ? FRONT SEQ9 AGE 2 DB K H ; end Tbll_»ay030: DB 60 ; speech speed DB Voice+7 ; system pitch set t ing DB 96,163/ 163,129 ;SEG10 FRONT AGE DB FFH ; end Tbll_sayv31: DB 60 ; speech speed DB Vcice+0 : system pitch setting DB 39,63 ySEQU FRONT AGE 2 DB FFH ; end A-2M Tbll_sayQ32: DB 46 ;speech speea DB Voiced ;system pitch setting DB 128 1 117 ;SEQl2 FRONT AGE 2 ADD DB FFH ; end Tbll_s»y033; DB 56 ■ speech speed DB Voice+7 ;system j ch setting DB 99,55,162,28 ;SEQ14 FRONT AGE2 DB FFH ; end Tbll_say03«: DB 46 ? speech spe* 3 DB Voice* 6 ^system pitch setting DB 136,34 ?SEQ15 fRONT AG.: ADD 20 DB FFH ; end r Tbll_say035: DB 56 ;speech speed DB Voice*6 ; system pitch setting DB 35,ie:, 48,162/93,133 ;SEQ16 FRONT AGE2 ADD20 TO EEGGimm DB FFH ; end Tbll„say036; DP 50 ;speech speed DB Voice+3 ;system pitch setting DB 162,1 ;SEQl FRONT AGE3 ADD 20 DB FFH ; end Tbll_say037: DB 46 ;speech speed DB Vo I ce ;system p'tch setting DB 81,77 5 2 ;SEQ2 FRONT *tGE3 DB FFH ; end TbU_say038 : DB 46 ;speech speed DB Voice+S ;system pitch setting DB 1,1 ;SEQ3 FRONT AGE3 ADD29 DB FFH ; end Tbll_s*y039: DB 50 ;speech speed DB Voice*6 ;system pitch setting DB 162,14, 27 i SEQ4 FRONT AGE4 ADD41 DB FFH ; end ERROR Tbll„say040; DB 46 i speech speed DB Voice ;system pitch setting DB DB FFH ; end A-205 Tbll_say040; DB 46 ;speech speed DB Voice ;system pitch setting DB 99,35, 47 , 58 ;3EQ6 FRONT AGE3 DB FFH ; end Tbn_say041: DB 46 ;speech speed C Voice ;system pitch setting DB 99,60, 77 ( 23 ;SEQ7 FRONT AGE3 ADD 22 DB FFH ; end Tbll_say 42: DB 46 ;speech speed DB Voice ,■ sy tem pitch setting DB 93,145 ; isEQS FRONT AGE3 ADD 21 DB FFH ; end ; ERROR ; Tbll_sayQ44: ; DB 46 ;speech speed ; DB Voice i system pitch setting ; DB 4 GO TO 22 ; DB FFH ; end Tbli_s*y$43 DB 30 ?speech speed DB Vciee +B ;system pitch setting DB 96,165 ,165,165,129,149 ~ ;seqlG FRONT AQE3 ADD SAY20 Dh FFH ; end Tbll_say044: DB 50 ;speech speed DB Voice+ 4 1 system pitch setting DB 145 ;SEQl1 FRONT AGE3 DB FFH ; end Tbll_say04 5: DB 46 ;speech speed DB Voice ,■ system pitch setting DB 119,77 ;SEQl2 FRONT AGE3 {HEEY,TICKLE KE J ald: DB FFH ; end Tbll_say046 DB 46 i speech speed DB Voice ;^ d £Ceiu pitch setting DB 123 ; SK713 fRONT AGE3 (NANNY, NANNY) add: DB FFH end Tbll_say047: DB 46 ;speech &peed DB Voice -m pitch setting DB 136,117 ;SEC 3 fRONT AGE3 (RASBERRY+ hE HE HE ) ADD22 DB FFH ; end Tbll_aay04S: DB 46 7 speech speed A-2Q6 DB DB DB t Tbll_sayQ49i DB DB DB DB Tbll^sayOSO: DB DB DB DB Voice ; system pitch setting 35,162,47 ;SEQ16 kAH LOVE FRONT AGE3 ADD 20 FFH ;end 56 ;speech speed Voice+6 jsystem pitch setting 81,133 ;SEQ16 (U-NYE QUICK KISS) FRONT AGE3 *DD2G FFH ;end 46 ;speech speed Voice ;system pitch setting 77 ; SEQ2 t TICKLE) FRONT AGE4 FFH ;end Tbll_tjayG52: DB 46 ;speech speed DB Voice+6 ;system pitch setting DB 1 ;£EQ2 iAGAIN) FRONT AGE4 DB FFH ;end Tbll_say052: DB 4 6 DB Voice DB 93 DB FFH Tbll„say053; DB 46 DB Voice DB 52 DB FFH Tbll_say054 s DB 46 DB Voice DB 47 DB FFH speech speed system pitch setting SE03 {YOU) FRONT AGE4 end ;speech speed t system pitch setting ;£EQ3 (HE) FRONT AGE4 ; end ;speech speed system pitch setting ;SEQ4 (LOVE) FRONT AGE4 ; end Tbll_say055: DB DB DB DB 46 ;speech speed Voice+6 jsystem pitch setting 117 ;SEQ5 {HE HE Hr. FRONT AGE4 FFH ;end TbU_s*yQ56: DB DB DB DB ; Tbll,_sayO 57 : DB DB DB DB f Tbll„say05B: DB 46 ;speech speed Voice ;system pitch etting 8,27 ;SEQ5 tBIO FUN) FRONT AGE4 ADD26 FFH ;end 46 jspeech speed Voice ;system pitch setting 60 ;SEQB (NO) FRONT AGE4 FFH ;end 46 yspeech speed DB Voice ;aysiem pitch setting DB 68 ;SEQ8 Oi4Z DB 55 ;speech speed DB Voice+8 ;system pitch setting DB 8 DB FFH ;end Tbl2_„ayl38: ;SG DONE DB 4 5 ; speech spee^ DB Voice+8 ;system pit h setting DB 137,137,137,136 DB FFH ; end Tbl2_sayl39: ;SG DONE DS 60 ;speech speed DB Voice ;system pitch setting DB 149 DB FFH t Tbl2,&^ 140: ; SG DONE DB 40 ;speech speed DB Voice-3 ;system pitch setting DB 16 DB FFH ; end Tbl2_sayl41: SG DONE DB 20 ;speech speed DB Voice+S ;system pitch setting DB 161 DB FFH ;end Tbl2„sayl42: ;SG DONE DB 46 ;speech speed DB Voice-9 ;system pitch setting DB 74 DB FFH ;end Tbl2_sayl43: ;SG DONE DB 80 ;speech speed DB Voice+4 ;system pitch setting DB B2 DB FFH ;end Tbl2_sayl44; ?SG DONE DP 46 ;speech speed DB Voice ;-/stem pitch setting ;SG DONE 46 ;speech speed Voice+5 ;system pitch setting 52 FFH ; end A-217 DB 14 DB FrH ;end Tbl2_s&yl45: ;SG DONE DB 46 ;speech speed DB Voice ;pitch control DB 6 DB FFH ;end Tbl2_say14 6: ;SG DONE DB 46 ;speech speed DB Voice ;system pitch setting DB 83 DB FFH ;end Tbl2_sayM7; ; SG DONE DB 70 ;speech speed DB Voice ;pitch control DB 76 DB FFH ;end TbI2_sayl48: ;SG DONE DB 60 ;speech speed DB Voice ;system pitch setting DB 37 DB FFH ;end ;TBL1„SA¥53 ;Tbll_say29: ; DB 4 6 ; DB Voice ; DB 52 ; DB FFH Tbl2_sayl4£: DB 3 0 DB Voices 5 DB 47 DB FFH ; end Tbl2_sayl50: DB 6C DB Voice 3 DB 81 DB FFH ;end Tbl2„sayl5!: DB 55 DB Voice-7 DB 53 DB FFH ;end i SG DONE ;speech speed ;system pitch setting ; end ; SG DONE ;speech speed ■system pitch setting ; SG DONE ;speech speed ;system pitch setting ;£G DONE speech speed ;system pitch setting Tbl2_sayl52: DB DB DB DB FFH ;SG DONE 40 ;speech speed Voice-10 ;system pitch setting 35 ; end T l say!53: DB DB ;SG DONE 46 ;speech speed Voice-10 ;system pitch setting A-ns DB 39 DB FFH ;end Tfcl2_sayl54 ; SG DONE DB 55 ;speech speed DB Voice+3 ;system pitch setting DB 165,165,144,165,144,165.144,165, DB FFH ;end Tbl2_sayl55 ;SG DONE DB 46 ;speech speed DB Voice :system pitch setting DB 72 DB FFH ;end Tbl2__sayl56 ;SG DONE DB 60 ;speech speed DB Voice ;system pitch setting DB 1 DB FFH ;end ;TBL1_SAYS3 ;Tbll_say3fl ;SG DONE ; DB 46 ;speech speed 1 DB Voice ;systex pitch setting ; DB 52 ; DB FFH ; end ;END GEORG£ 07/06/98 ;£ND WAKE 4 ;GEORGE 07/06/98 ;HUNGER Tbl2_sayl57 ;SG DONE ;HUNGER DB 65 ;speech speed DB Voice+8 ;system pitch setting DB 63 DB FFH ;end Tbl2_sayl58 ;SG DONE DB 7^ ■ speech speed DB Voice ;system pitch setting DB 23 DB FFH ;end Tbl2_sayl59 ;SG DONE DB 40 ;speech speed DB Voice-7 ;system pitch setting DB 7 DB FFH ; end Tbl2 saylGG ;SG DONE DB 55 ;speech speed DB Voice ^system pitch setting DB 33 DB FFH ;end Tbl2_sayl61 ;SG DONE DB 75 ;speech speed A-Z19 DB oice ; £yater.i pitch setting DB 55 DB FFH tend Tbl2_sayl62: ;SG DONE DB 40 ;speech speed DB Voice-15 ;system pitch setting DB B4 DB FFH ; end Tbl2_Sayi63r ;SG DONE DB 65 ;speech speed DB Voice+8 ;system pitch setting DB 157 DB FFH ;end Tbl2„sayl64: ;SG DONE DB 55 j speech speed DB Voice* 6 ; system pitch setting DB 119 DB FFH i ,nd Tbl2_aayl65: ;SG DONE DB 65 ; speech speed DB Vcice+S fsystem pitch setting DB 85 DB FFH jend Tbl2„sayl6G : ; SG DONE DB 55 ;speech speed DB Voice ;system pitch setting DB 14 DB FFH ;end Tbl2_sayl67; ;SG DONE DB 40 ;speech speed DB Voice ;system pitch setting DB B DB FFH ;end Tbl2_sayl68 : ; S3 DONE ;SAM£ AS SAY135 WITH DIFFERENT MOTOR POS. DB 46 ;speech speed DB Voice ;system pitch setting DB 35 DB FFH ■end ;END GEORGE 07/06/98 ; END HUNGER ;GEORGE 07/07/98 ;INVERT ;WAS68 Tbi:_sayl69: ;SG DONE ; INVERT BB 65 ;speech speed DB Voice ;system pitch setting DB 3 6 D ti FFH ? end A-22Q Tbl2_eayl70: /SG DONE DB 55 /speech speed DB Voice+B /system pitch setting DB 94 DB FFH ;©nd Tb]2_sayX71: / SG DONE DB 70 jspe-ch speed DB Voice+8 /system pitch setting DB 158 DB FFH ; end Tbl2_sayl72: ;SG DONE DB 55 ;speech speed DB Voice+8 ; sy, pitch setting DB 14 fi DB FFH j end t Tbl2_sayl73: DB 100 DB Voice+8 DB 97 DB FFH ;end Tbl2„sayl74: ;SG DONE DB 50 /speech speed DB Voice+5 /system pitch setting DB 8 DB FFH ;end 7*>12„sayl 7 5: ; SG DONE Di 55 ;speech speed DB Voice-S /system pitch setting DB 9 DB FFH ;end J Tbl2_sayl7 6 : j SG DONE DB 50 /speech speed DB Voice-10 /system pitch setting DB 54 DB FFH ?end Tbl2_sayl77; /SG DONE DB 70 ;speech speed DB Voiced /system pitch setting DB 57 DB FFH ; end Tbl2_sayl7 8 t ;SG DONE DB ^4 /speech speed DB Voice /system pitch setting DB 24 DB FFH ;end Tbl2_sayl79; I SG DONE DB 55 ;speech speed DB Voice-5 /system pitch setting DB 10 DB FFH ;end /SG DONE ;speech speed /system pitch netting A-221 Tbl2„sayl8Q ; DB 65 DB Voice-5 DB BO DB FFH ;end Tbl2_sayiai; DB 55 DB Voice-10 DB 60 DB FFH ; end Tbl2_saylS2: DB 55 DB Voice-10 DB 43 DB J FFH ;©nd Tbl2_sayl83: DB 75 DB Voice-8 DB 90 DB FFH ; end Tbl2 say!84 : DB 75 DB Voice-4 DB 29 DB FFH ; end Tbl2_$ayl85: DB 55 DB Voice*5 DB 34 DB FFH Tbl2_satyl8 6: DB 65 DB Voice+2 DB 45 DB FFH ; end Tbl2_s^ylS7: DB 65 DB Voice-7 DB 39 DB FFH l ; end Tbl2_s«yl68 DB 35 DB Voice DB 130 DB FFH ;end Tbl2„sayl56; i TblI_Bay88 i DB 75 DB Voi- * DB 23 DB FFH ;SG DONE ;speech speed ;system pitch setting ;SG DONE ;speech speed ;system pitch setting ;SG DONE ; speech speed ;system pitch setting ;SG DONE ;speech speed ;system pitch setting ; SG DONE ;speech speed ;system pitch setting ;5G DONE ; speech speed ;system pitch setting ; end *SG DONE ;speech speed ;system pitch setting ;SG DONE sptech speed ^system pitch fitting ; SG DONE ;speech speed ;system pitch setting ;SG DONE ;speech speed ;system pitch setting ; end A-222 Tbl2„saylS9: ; SG DONE DB 55 ;speech speed DB Voice -system pjitch setting DB 1 DB FFH ;end Tbl2_sayl90: DB 100 ;speech sp^ed DB Voice ; system pitch setting DB 97 HP FFH ;end t Tbl2_s«yl91 t DB 100 ;speech speed DB Voice-10 ;system pitch setting DB 97 DB FFH ■, end Tbl2_sayl92: DB 100 ;speech speed DB Voice-20 ;system pitch setting DB 97 DB FFH ;end ;END GEORGE 07/07/9B ;EKD INVERT }start at 202 Tbl2_sayl93 t ;SG DONE ;BACKSG DB 70 ;speech speed DB Voice ;system pitch setting DB 153 DB FFH ;end Tbl2_sayl94: ;SG DONE DB 75 ;speech speed DB Voice ;system pitch setting DB 2 DB FFH ;end ™bl2_sayi95 s ;EG DONE 3B 55 ,speech speed DF Voice ;system pitch setting DB 39 DB FFH ;end Tbl2_sayl96; ? SG DONE DB 65 ;speech speed DB Voice+4 ;system pitch setting DB 67 ? PET DB FFH ;end Tbl2_sayl97; ;SG DONE DB 75 ;speech speed DB Voice+5 ;system pitch setting DB 1 DB FFH ;end Tbl2_sayl98: ;SO DONE DB 55 ;speech speed DB Voice-10 ;system pitch setting A-223 DB 146 DB FFH ;end Tbl2_sayl99 i ;SG DONE DB S5 ; speech speed DB Voice*5 ;system pitch setting DB 35 DB FFH ,* end Tbl2. sey200: ;SG DONE DB SO ;speech speed DB Voice-b ;system pitch setting DB 55 DB FFH fend Tbl2_say20l: ;BQ DONE DB 70 ;speech speed DB Voice-5 ;system pitch setting DB 62 DB FFH ; end Tbl2_say202: ;SG DONE DB 80 ;speech speed DB Vo ice-5 ;system pitch setting DB B4 DB FFH ; end ;Tbl2_sayl4B ■Tbl2_say212; f SG DONE ; DB 70 ;speech speed ; DB Voice-5 ;system pitch setting l DB 29 ; DB FFH ;end Tbl2_say203 t f SG DONE D3 70 ;speech speed DB Voice ;system pitch setting DB 37 DB FFH r end Tbl2_say2£M : ; SG DONE DB 55 ;speech speed DB Voice fsyste;. pitch setting DB 152 DB FFH ; end Tbl2_say205 j ;SG DONE DB 65 ;speech speed DB Voice-5 ;system pitch setting DB 52 DB FFH ; end Tbl2_j&ay206: ;SG DONE DB 65 ;speech speed DB Voice*2 ;system pitch setting DB 47 DB FFH ; end Tbl2_say207: fSG DONE A-224 DB 65 ; speech speed DB Voice-3 ;system pitch setting DB 81 DB FFH ;end i Tbl2_say2G8: ;SG DONE DB 70 ;speech speed DB Voice*6 ;system pitch setting DB 48 DB FFH ;end TM2„say209: ; SG DONE DB 70 ;speech speed DB Voice+3 ;system pitch setting DB 161 DB FFH ;end Tbl2_say210: ?3G DONE DB 55 ?speech speed DB Voice ;system pitch setting DB 15 DB FFH ;end Tbl2_say21ii ; SG DONE DB 45 ; speech '"peed DB Voice-10 ;Sj _em pitch setting DB 8 DB FFH ;end Tbi2_say212: ;DONE DB 55 ;speech speed DB Voice-10 ;system pitch setting DB 42 DB FFH ;end Tbl2_say213: ;SG DONE DB 65 ;speech speed DB Voice-15 ;system pitch setting DB 57 DB FFH ;end Tbl2_cay2l4: jSG DONE DB 50 ;speech speed DB Voice ;system pitch setting DB 75 DB FFH ;end Tbl2„s*y2l5; ;SG DONE DB 5S ;speech spei d DB Voice ;system pitch sett ng DB 101 DB FFH ? end Tbl2„&ay216: ;SG DONE DB 70 ;speech speed DB Voice-3 ;system pitch setting DB 49 DB FFH i end Tbl2_say2l7: jSG DONE A-225 DB 75 speech speed DB Voice*5 ;system pitch setting DB 86 DB FFH ?end Tbl2_s«y218 : ;SG DONE DB 55 ;speech speed DB Voice /system pitch setting DB 72 DB FFH ; end Tbl2_say219: ;SG DONE DB 55 ; speech speed DB Voice+5 ;system pitch setting DB 150 DB FFH ; end f Tbl2_say220: ;SG DONE DB 55 ;speech speed DB Voiced ;system pitch setting DB 151 DB FFH ; end Tbl2_aay221; ;SG DONE DB 55 ;speech speed DB Voice ;system pitch setting DB 97 DB FFH ; end Tbl2_say222: ; SG DONE DB 70 j speech speed DB Voice ;system pitch setting DB 165,149 DB FFH ; end Tbl2_$ay223: :SG DONE DB 55 ;speech speed DB Voice ;system pitch setting DB 129 DB FFH ;er. 1 I Tbl2_s&y224; ;£G DONE DB 75 ;speech sp^ed DB Voice-4 ;system pitch setting DB 50 DB FFH ; end TLX2„say225: ;SG DONE DB 55 ;speech speed DB Voice*5 /system pitch setting DB 32 DB FFH ; end Tbl2_say226: ;SG DONE DB 55 ;speech speed DB Voice*5 ;system pitch setting DB 165,140 DB FFH rend Tbl2_s*y227 i ;SG DONE A-226 DB 65 ;speech speed DB Voice ;system pitch setting DB 144 DB FFH ; end Tbl2_say228 7 ;SG DONE BB 85 ;speech speed DB Voice ; system pitch setting DB 18 DB FFH ;end Tbl2_say2 28: SG DONE DB 50 ;speech speed DB Voice+8 ;system pitch setting DB U0 DB FFH ; end Tbl2_say230: ;SG DONE DB 65 ;speech speed DB Voice rsystem pitch setting DB 66 DB FFH t end Tbl2_say231: ;SG DONE D3 70 ;speech speed DB Voice*8 system pitch setting DB 87 DB FFH ;end Tbl2„aay232: ;SG DONE DB 60 ;speech speed DB Voice+8 ;system pitch setting DB 71 DB FFH ;end Tbl2__say233: ;SG DONE DB 55 i speech speed DB Voice ;system pitch setting DB 93 DB FFH ; end Tbl2_say2 34 : ;SQ DONE DB 46 ;speech speed DB Voice-20 ;system pitch setting DB 161 DB FFH ;end Tbl2_B«y235: DB 70 ;speech speed Db Voice ;system pitch setting DB Bl DB FFH ;end Tbl2__£&y236: DB 70 ;speech speed DB Voice ;system pitch setting DB 93 DB FFH ;end A-227 SICK GEORGE 07/08/98 start at 39 Tbl2_eav237: ;SG DONE ;SICK1 DB 55 speech speed BB Voice+5 ;system pitch setting DB 165,141 DB FFH ; end ; Tbl2_sayl35 ;Tbll_say40 ; ;SG DONE ; DB 46 ;speech speed r DB Voice ;system pitch setting ; DB 35 ; DB FFH ; end ;Tbll„sayll7 ;Tbll_say41: ;SO DONE ; DB 46 speech speed ; DB Voice ;system pitch setting ; DB 10 ; DB FFH ; end Tbl2„say238: ;SG DONE DB 4 6 speech speed 7B Voice ;system pitch setting DB 40 DB FFH ; end Tbl2_say239: ;£G DONE DB 46 speech speed DB Voice~5 ;system pitch setting DB 60 DB FFH ; end Tbl2_say240j ;SG DONE DB 50 speech speed DB Voice ; systert pitch setting DB 30 DB FFH ; end ;Tbll_say53 ; Tbll_,say45: ;SG DONE f DB 46 ;speech speed ; DB Voice ;system pitch setting ; DB 52 ; DB FFH ; end Tbl2_say24l: ;SG DONE DB 70 ; speech speed DB Voice-8 ^system pitch setting DB 17 DB FFH ; en d 7bl2_say242: ;SG DONE DB «G ; speech apeed DB Voc« -10 i system pitch setting DB 46 DB FFH ; end # Tbi2_£ay243: ;SG DONE DB 55 ;speech speed DB Voice-8 ;system pitch setting DB 8 DB FFH ;end Tbl2_say244: ;SG DONE DB 40 ;speech speed DB Voice-8 ;system pitch setting DB 73 DB FFH ;end Tbl2_s«y245: ; BG DOME DB 75 ;speech speed DB Voice-5 ;system pitch setting DB 80 DB FFH ; end ;Tbl2_sayl82 ;Tbll_say51: t SG DONE ; DB 55 ;speech speed ; DB Voice-10 ;system pitch setting ; DB 43 ; DB FFH ;end Tbl2__say246 : ;SG DONE DB 70 ;speech speed DB Voice ;system pitch setting DB 9 DB FFH ;end Tbl2_say247: ;SG DONE DB 60 ;speech speed DB Voice-12 ;system pitch setting DB 80,165 DB FFH ;end Tbl2_say248: -SG DONE DB 100 ;speech speed DB Voice i system pitch setting DB 140 DB FFH ;end Tfel2_say249: ;SG DONE DB 40 ;speech speed DB Voice-20 ;system pitch setting DB 162,129 DB FFH ;end Tbi2_s*y250: ;SG DONE DB 100 ;speech speed DB Voice ;system pitch setting DB 142 DB FFH ;end ,-END GEORGE 07/08/98 ;END SICK ;LIGHT t GEORGE 07/08/98 ;©tarts at 2 Tbl2_say25ls DB 40 ;speech speed DONE RB BEGIN LIGHT D. (BRIGHTER) A-229 DB Voice ;pitch control DB 119,18 DB FFH i end ; Tbll_say252 ; DB 40 ;speech speed DO NOT USE ; DB ;pitch control SEE SAY 15 ; DB FFH ;end Tbl2_say*52: DB 75 ;speech speed Done RB DB Voice*5 ;system pitch setting DB 142 DB FFH ;end Tbl2_say2S3: DB 46 ;speech speed done EB DB Voice ;system pitch setting DB 158,165,165,14,6 DB FFH ;end Tbl2_say254 DB 46 ;speech speed done RB DB Voice ; system pitch setting DB 102 r 145 DB FFH ;end Tbl2„say255 DB 46 ;speech speed DONE RB DB Vcice+8 ;system pitch setting DB 119,35,164,5.81 DB FFH ;end fbl3_say256 i DB 4 6 ;speech speed DONE KB DB Voice-4 ;system pitch setting DB 148,163,145 DB FFH ;end Tbl3_say257 DB 46 ;speech speed DONE RB DB Voice ;system pitch setting DB 131,164,95,149,123 DB FFH i end Tbi3_say258 DB 55 ; speech speed SEQ 4, AGE 2 DONE RB DB Vo ice-4 ; system pitch setting DB 156,163,6,6 DB FFH ; end Tbl 3_say2$9 DB 45 , speech d SEQ 6, AGE 2 DONE EB DB Voice*8 ,*system p*tch setting DB 119,35,70,81 DB FFH ? end ; Tbl3_say2 60 DB 46 ; speech speed KB DONE A-230 DB Voice+B system pitch setting SEQ 1, AGE 3 DB 119 t 66 DB FFH ;end Tbl3_say261: DB 4 6 /speech spt d SEQ 4, AGE 3 RB DONE DB Voice-3 ;system p tch setting DB 158,14,42 DB FFH jend Tbl3_say262: DB 46 ;speech speed SEQ 6 AGE 3 RB DONE DB Voice-3 ;system pitch setting DB 119,35,5,93 DB FFH ;end Tbl3_say263i DB 60 :speech speed SEQ 2 , AGE 1 KB DONE DB Voice+0 /system pitch setting DB 131,95,149 DB FFH ;end Tbl3_say264 ; DB 46 /speech speed RB DONE DB Voice-4 ;system pitch setting DB 158,8,42 DB FFH ;end Tfcl3_say265: ; * B DB 46 ;speech speed DB Voice-4 ;system pitch setting DB 113,35,70,93 DB FFH ;end ;END GEORGE 07/08/93 /END LIGHT / DARK ;GEORGE 07/08/9S Tbl3_say266: DS 52 ; speech speed BEGIN LIGHT D. (DARKER! DB Voice + 8 /system pitch setting SEQ I AGE 1 KB DONE DB 119,10,162,6 DB FFH ;end Tbl3_say267 * DB 4 6 ; speech speed SEQ 2 AGE 1 DONE RB DB Voice+S /system pitch setting h© 119,6,21 Dl. FFH ; end Tbl3„say268: DB 55 r t speech speed DB Voice* 0 /system pitch setting SEQ ? r GE 1 DONE RB DB 119,6,163,S2,163,23 DB FFH ;end Tbl3_say269: DB 40 i speech speed DB Voice+S system pitch setting SEQ 4 AGE 1 DONE RS DB 158,101,163,104 A-m DB FFH ; end Tbl3_say270: DB DB DB DB FFH Tbl3„say27l; DB 59 ;speech speed DB Vcice+4 ; system pitch setting DB 149,163,21,21 ;SE Q6 AGE4/SEQ14 AGS4 LIGHT js DB FFH ;end Tbl3_say272: DB 52 ;speech speed DB Voice+8 ;system pitch setting DB 119,35,162,10,5,81 DB FFH ;end DONE RB Tbl3_SAV273: DB 60 ;speech speed DB Voice+S ;pitch control X3NE P3 DB 63,163,149,163,163,51,35,152 DB FFH ;end Tbl3_say274; DB 52 ;speech speed DB Voices2 ; systair, pitch setting DB 119,60.6 DB FFH ;end Tbl3_say2l5; DB --2 ; speech speed DB Voice+2 rpitch control DB 119,60,45,85 DB FFH ;end DONE RB Tbl3„say276: DB 6£J ; speech speed DB Voiced ;system pitch setting DONE KB DB 119,42,62,23 DB FFH ; end Tbl3_&Ay277: DB 70 ;speech speed DB Voice+2 jsystem pitch setting DB 148,60,6,148 DB FFH ;end DONE KB Tbl3_Fay278: DB 52 ;speech speed DB Voice+2 ,■ system pitch setting DONE RB DB 119,52.60,70,81 DB FFH ;end Tbl3_say279: DB 52 ;speech speed DB Voice ;system pitch setting DB 119,10,42 70 ;speech speed Voice+8 ;system pitch setting 148.10,6,148 ; end A-232 I® FFH ;end DONE KB Tbl3_say280: DB 52 ;speech speed DB Voice ;system pitch setting DONE KB DB 119,10,34,85 DB FFH ;end Tbl3_say281; DB 60 ;speech speed DB Voice ,-system pitch setting DB 119,42,83,23 DB FFH ;end DONE KB * Tbl3_say2S2: DB 52 ;speech speed DB Voice ;system pitch setting DB 119*52,60,5,93 DB FFH ;end DONE RB Tbl3_say263t DB 60 ;speech speed ! !NOTE I! PRINTED T/ “ HAD WRONG WORD NUMBER FOR "K2SS P DB Voice :system pitch setting DB 63,149,162,38,35*152 DB FFH ; end DONE RB Tbl3_ j say284 : DB 52 I Speech speed DB Voice ;system pitch setting DB 119*60,42 DB FFH ;end DONE RB J Tb.l3__say2B5 : DB 52 ; speech speed DB Voice-3 ;system pitch setting DB 119,60,34,85 DB FFH ;end Tbl3_say286: DB 60 i speech speed DB Voice ;system pitch setting DB 119,42, 8\ 68 DB FFH ;end Tbl3_eay237: DB 70 ;speech speed DB Voice ;system pitch setting DB 148,60,42,148 DB FFH ;end Tbl3_say28S: DB 46 ;speech speed DB Vcice ;system pitch setting DB 113,163,52,60,70,93 ;SEQ7 AGE4/EEQ15 AGE 4 LIGHT js DB FFH ;end Tbl3_sfly289i DB 50 ;speech speed DB Voice ; system pitch setting A-233 DB 63,165,149,38,52,152 ; SEQS AGE4/SEQ16 AGE 4 LIGHT -Tb DB FFH ;end ;END GEORGE 07/C8/9S ;END DARK ; SOUND 'Start 43 *bl3_say290i DB 50 ;speech speed DB Voice ;system pitch netting DB 163,146,165,17 ,'SI-Al, - U/S1-A2 SOUND js DB FFH ;end ;S9-A2/S1 -a 3/S9-A3 SOUND js Tbl3_say291; DB 46 ;speech speed DB Voice ;system pitch setting DB 85,165,165,165 ;S2-A1/S10-Al/S2-AL SOUND js DB 165,165,140 ;S10-A2 f&2 -A3/SiQ-A3 SOUND js DB FFH ,end ;S2-A4/S1G-A4 SOUND js Tbl3_S'iy292 : DB 50 ;speech speed DB Voice ;system pitch setting s , DB 121,165,164,14,163,41,21 ;£3-Al/311-Al'SOUND js DB ~FH i end Tbl3_say293 : DB 46 ;speech speed >B Voice ; ay stem pitch netting DB 163,125,164,5,162,41 ;S4-A1 /S12-A. . -UHD je T'B FFH ; end Tbl3_say294: DB 46 ;speech epeeu DE Voice ;system pitch setting DB 35,163,89 ;S5-AVS13 Al SOUND (with say /m2 ] js DB FFH ;end Tbl3_say295: DB 53 ;speech speed DB Voice ;system pitch setting DB 163,148,163,36 ;S6-A1/S14-Al/S6-A2 SOUND js DB FFH ?end t S14-A2/S6-A3/£14-A3 SOUND js Tbl3_say2■ I> S3 ;speech speed DB Voice ;system pitch setting DB 17 ;S7-Al/S15-A1 SOUND (with say/m2j js DB FFH ;end Tbl3„say29J: DB 60 ;speech speed DB Voice ;system pitch setting DB 122,164,21,164,21 ;S8-A1/S16-A1 SOUND js DB FFH |end ;S0^A3/S16-A3 SOUND js Tbl3_sAy29fi: DB 46 speech speed DB Voice ;system pitch setting A-234 ;S3-A2/S11-A2 SOUND js DB 121,165,164,8,16',41,21 DB FFH ;end Tbl3_aay239: DB 46 gepeech speed DB Voice ;system pitch setting DB 163,129,164,5,165,73 DB FFH ,-end ;S4-A2/S12-A2 SOUND js Tbl3_say300: DB 46 ;speech speed DB Voice ,- system pitch setting DB 35,165,31 ;S5-A2/S13-A2/SS-A3 SOUND (with say/m2) js DB FFH ;end ;S13-A3/S5-A4/S13-A4 SOUND (with say/m2) js Tbl3_say301i DB 46 ;speech speed DB Voice /system pitch setting DB 8,162,41 f 163,85 ;S7-A2/S15-A2 SOUND (with say/m2) js DB FFH ;end Tbl3_e«y302: DB 60 ;speech speed DB Voice /system pitch setting DB 122,164,21 /S6-A2/Si6-A2 SOUND js DB FFH :end Tbi3„say303: DB 46 ;speech speed DB Voice ;system pitch setting DB 121,165,164.14,163,73,21 DB FFH ;end /S3-A3/S11-A3 SOUND js Tbl3_sfly304; DB 46 /speech speed DB Voice /system pitch setting DB 163,129 , 164 , 35 , 165,44 DB FFH ;end ;S4-A3/S12-A3 SOUND js ;f*-A4/S12-A4 SOUND js Tbl3_say305: DB 46 /speech speed DB Voice ; sys em pitch setting DB 0,73,164,85 ; S7-A3/S15-A3 SOUND (with say/ro2) js DB FFH /end ; S7-A4/S15-A4 SOUND (with say/ia2}js Tbl3_«ny306/ DB 55 ;speech speed DB Voice /system pitch setting DB 164,143,164,163,46 DB FFH ; end ; Tbl3_say307: DB 46 /speech speed DB Voice /system pitch setting DB 121,165,164,6,163,73,21 DB FFH ;end ;S1-A4/S9-A4 SOUND js /S3-A4/S11-A4 SOUND js Tbl3_say308; DB 55 ;speech speed DB Voice /system pitch setting DB 164,148,164,163,54 DB FFH ; end Tbl3_ssy309: DB 60 ;speech speed DB Voice ; system pitch setting DB 122,164,163,88,164,21 DB FFH ;end ;END SOUND ■TILT ;GEORGE 07. 03/98 Tbl3_say3IJ t DB DB DB DB 56 Voice*8 160 FFH ;end ;speech speed /pitch control fSI Al TILT/S4 Al TILT/S14 Al TILT js Tbl3_aay3U; DB DB DB DB 46 Voice 157,36 FFH ;end /speech speed /pitch control ;S2 Al TILT js Tbl3„say3X2; DB DB DB DB 4 6 ;speech speed Voice /system pitch setting 158,9 ;S3 Al TILT js FFH ;end Tbl3_say313 DB DB DB DB 46 Voice* 3 154 FFH ;end ;speech speed /system pitch setting ;S5 A1/S4 A2/32 A3/S2 A4 TILT js Tbl3_say314 DB 46 jspeech speed DB Voice /system pitch setting DB 159,82,39 ;56 Al TILT js DB FFH lend Tbl3„B&>315: DB 46 ;speech speed DB Voice ;system pitch setting DB 155,39,39 /S7 A1 TILT/S6 A2 TILT je DB FFH Jend Tbl3_say3l6: DB 46 /speech speed DB Voice /system pitch setting DB 37,152 ;58 Al TILT (with say/m5S js DB FFH ;end Tbl3_say3l7? ;56-A4/S14-A4 SOUND js % S8-A4/S16«A4 SOUND js A-236 DB 46 ;speech speed DB Voice jsystem pitch setting DB 154,120 ;S9 Al TILT/S9 A2 TILT js DE FFH ;end Tbl3_say3i3; DB 46 ;speech speed DB Voice ;system pitch setting DB 155,120,120 ;510 Al TILT/BID A2 TILT js DB FFH f end Tbl3_say3l9: DB 46 $ speech speed DB Voice ?system pitch setting DB 35,57 fSll Al TILT {with say/m2} js DB FFH ;end Tbl3„say320: DB 46 ;speech speed DB Voice ;system pitch setting DB 158,10,30 ;S12 Al TILT js DB FFH ;end Tbl3_say32l: DB 46 ;speech speed DB Voice ;system pitch setting DB 119,160 ;S13 Al / £15 A3 TILT js DB FFH ;end Tbl3„say322: DB 46 ;speech speed DB Voles ;system pitch setting DB 160,9 ;S15 Al TILT js DB FFH ;end Tbl3_s r 323: DB 46 ;speech speed DB Voice ;system pitch setting DB 154,149 ;£16 Al / £15 A2 / £13 A3 TILT js DB FFH ;end Tbl3_say324: DB 46 ;speech speed DB Voice ;system pitch setting DB 160 ;Si A2/S3 A2/S1 A3/S1 A4 TILT js DB FFH ;end 7 Tbl3_say325: DB 46 ;speech speed DB Voice :system pitch setting DB 52,9 ;S2 Al TILT {with say/ml 6) js DB FFH i end Tbl3_say326: DB 46 ;Speech speed DB Voice ;system pitch setting DB ' 159,83,39 ;S5 A2 TILT js DB FFH i end Tbl3_say327: DB 46 ;speech speed DB Voice ;system pitch setting DB 52,4iMl,l52 ;S1 A2 TILT (with say/t&Sj js DB FFH ;end Tbl3_say32S; DB 46 ;speech speed DB Voice ;system pitch setting DB 155 ;SB A2 TILT (with say/m5) js DB FFH ;end Tbl3_say329: DB 46 ;speech speed DB Voice /system pitch setting DB 52,5? /Sli A2 TILT (with e&y/m 2) js DB FFH j end Tbl3_aay330i DB 4 6 ;speech speed DB Voice ;system pitch setting DB 158,60,80 ?S12 A2 TILT js DB FFH ;end Tbl3_say33l: DB 46 ;speech speed DB Voice ;system pitch setting DB 163,156 /S13 A2 TILT (with eay/m5) js DB FFH ;end Tbl3_say332: DB 46 ;speech speed DB Voice ;system pitch setting DB 8,22,85 fSl4 A2 TILT js DB FFH ;end Tbl3_say333: DB 46 ;speech speed DB Voice ;pitch control DB 154,118,163,145,165,162,118 ;S16 A2/E14 A3/S14 A4 TILT js DB FFH ;end Tbl3_say334: DB 46 ;speech speed DB Voice ;system pitch setting DB 159 ;S3 A3 TILT js DB FFH ;end Tbl3_say3 3 5: DB 46 ;speech speed DB Voice ;pitch control DB 83,1 ;S4 A3/S4 A4 TILT (with say/m26) js DB FFH ;end Tbl3_say336: DB 46 ;speech speed DB Voice ; system pitch setting DB 155,52,62,85 ;S5 A3 TILT js DB FFH t end Tbl3_say337; DB 50 ;speech speed DB Voice ;system pitch setting DB 52,48,93,152 ;S6 A3 TILT (with say/mSi js DB FFH ;end Tbl3_say338: DB 46 ;speech speed DB Voice ;system pitch setting DB 155 ;S7 A3/S7 A4 TILT (with say/m5 ) js DB FFH ; end Tbl3_say339: DB 46 ;speech speed DB Voice ;system pitch setting DB 155,120,163,149 ;SB A3/S8 A4 TILT js DB FFH ;end Tbl3_say34G: DB 46 ;speech speed DB Voice ;system pitch setting DB 165,129 ;S9 A3/S9 A4 TILT (with say'm9) js DB FFH ;end Tbl3_say341f DB 46 ;speech speed DB Voice ;system pitch setting DB 160,163,120,120 ;£10 A3/S10 A4 TILT (with say/ml6ijs DB FFH ;end Tbl3_say342: DB 46 ;speech speed DB Voice ;system pitch setting DE 163,23 ; £11 A3/S15 A4 TILT (with say/m2Sc21J js DB FFH ;end Tbl3_say343: DB 55 ;speech speed DB Voice ;system pitch setting DB 164,156 ;Si2 A3 TILT (with say/mS) js DB FFH ,end Tbl3_say344; DB 46 ;speech speed DB Voice ;system pitch setting DB 163,1,163,1,117 ;S16 A3 TILT (with say/mS \ js DB FFH end Tbl3_say345 i DB 46 jspeech speed DB Voice ;system pitch setting DB 27,162,149 ;£3 A4 TILT With say/m26> js DB FFH ;end Tbl3^say346 \ DB 46 jspeech speed DB Voice ;system pitch setting DB 155,52,29,163,85 ;S5 A4 TILT js dB FFH ; end ; m . i ■■ • A-239 Tbl3_say347: DB 46 ;speech speed DB Voice ;system pitch setting DB 52.47,93.164,152 ;S6 M TILT [with say/roS) js DB FFH ;end Tb!3_say34B; DB 46 ;speech speed DB Voice jsystem pitch setting DB 52,24,68 ;S11 A4 TILT (with say/m2) js DB FFH j end Tbl3_say34 9: DB 46 jspeech speed DB Voice i system pitch setting DB 22,149 ;SI3 A4 TILT (with say/m5) js DB FFH ;end Tbl3_s*y3SO: DB 46 ;speech speed DB Voice ;system pitch setting DB 163,1,163,39*163,117 ;S16 A4 TILT (with say/m5) js DB FFH ;end ;END GEOHGE 07/09/98 ;GEORGE ?IR 07/09/98 Tbl3_say35l: DB 4 6 ;speech speed DB Voice*B ;pitch control DB 40 *, SEQl, seq2 , eeq3 , seq4 ir age 1 DB FFH ;end Tbl3_say352: DB 4 6 speech speed DB Voice ;pitch control DB 66,162,85 ;seq5, ir agel DB FFH ;end Tbl3„say353: DB 4 6 ;speech speed DB Voice j system pitch setting DB 19,85 ;seq6, ir agel DANCE WAH DB FFH ;end Tbl3_say354: DB 46 ;speech speed DB Voice+B ;system pitch setting DB 162,164,134,134 ;s*q6, ir age! DO DO DO DB FFH ;end Tbl3_say355: DB 46 ;speech speed DB Voice+2 ;system pitch setting DB 134,134,25,19 ;seq7 ir agel DB FFH i end Tbl3_say356; DB 50 I speech speed A-240 03 Voice+B ;system pitch setting D3 162 DB FFH ;end EMPTY SPACE I Tbl3_say357; DB 42 ;speech speed DB Voice ;system pitch setting DB 102,97,118,34 ;seq8 ir agel DB FFH ;end Tbl3_say358: DB BO ;speech speed DB Voice ;system pitch setting DB 117,34,22 /seq9 ir agel DB FFH ;end Tbl3_say359: DB 50 ;speech speed DB Voice ;system pitch setting DB 34,78,145,145 /seqlO,ll ir agel DB FFH /end Tbl3_aay360: DB BO speech speed DB Voice /system pitch setting DB 150,151,93,71 ;seq!2 ir agel TWINKLE DB FFH ; end Tbl3_say3 61; DB 46 /speech speed DB Voice /system pitch setting DB 91,31,165,165,165,165,165,165,128,31 /seql3,14 ir agel DB FFH ;end Tbl3^say362: DB 46 ;speech speed DB Voice /system pitch setting DB 161,72,161 ;seql5 ir agel DB FFH ;end Tbl3_eay363: DB 60 /speech speed DB Voice ;system pitch setting DB 144,144,144,144 ;seq!6 ir agel DB FFH ;end Tbl3_Say364: DB 46 /speech speed DB Voice+5 /system pitch setting DB 61,40 ;eeql,2,3 ir age2 DB FFH /end Tbl3^.say365: DB 46 /speech speed DB Voice+8 /system pitch setting DB 81,40 ;seq4,5 ir age2 DB FFH /end ; Tbl3_say366: A-241 DB 46 ;speech speed DB Voice+8 /system pitch setting DB 66,159 ;seq6 ir age2 DB FFH ;end Tbl3_say367: DB 46 ;speech speed DB Voice+7 /system pitch setting DB 19,165,165,165/164,85,134,165,135 age2 DB FFH t end Tbl3_say36H: DB 46 ;speech speed DB Voice+3 /system pitch setting DB 118,25,34 DB FFH i end Tbl3_say369: DB 51 /speech speed DB Voice+8 /system pitch setting DB 102,97,118 /seqlO ir age2 DB FFH / end Tbl3_eay37G: DB 46 /speech speed DB Voice+5 /system pitch setting DB 117,34,22 ■SEQll ir age2 DB FFH /end Tbl3_say37l: DB 48 /speech speed DB Voice /system pitch setting DB 91,31,165,165,165,165,165,165,124,31 age2 DB FFH ; end Tbl3_say3?2: DB 55 /speech rpeed DB Voice /system pitch setting DB 161,72,161 DB FFH / end Tbl3_say37 3: DB 50 ;speech speed DB Voice /system pitch setting DB 143,144,143 /seq!6 DB FFH / end Tbi3_say374; DB 50 ;speech speed DB Voice /pitch control DB 14,40 /seql,2,3,4,5 ir age3 DB FFH / end Tbl3_say375: DB 46 /speech speed DB Voice+5 /system pitch setting DB 35,48,66 ;seq6 ir &ge3 DB FFH ;end ;seq7,8 ir zseq9 ir age2 /seql3,l4 ir /seql5 ir age2 ir »ge2 A-242 Tbl3_say376: DB 50 ;speech speed DB Voice*8 ;pitch control DB 19,12,134,134 :seq7,8 ir age3 DB FFH ;end Tbl3 w say377: DB 46 ;speech speed DB Voice*3 jsystem pitch setting DB 34,85,99 ;SEQ9 ir age3 DB FFH ; end * Tbl3_say3?8: DB 46 ;speech speed DB Voice*2 ;system pitch setting DB 156,25,34 ;seqll ir age3 DB FFH ;end Tbl3_say379; DB 50 ; speech speed DB Voice*3 ;system pitch setting DB 63,165,165,165,165,165,124,31 ;seql3,14 ir age3 DB FFH end Tbl3_say38G; DB 70 ;speech speed DB Voice*4 ;system pitch setting DB 35,72,162,162,162,162,162,162,162,162,162,162,161 DB FFH ;end Tbl3_say3Sl: DB 58 DB Voice-*-5 DB 40,85 DB FFH ;end Tbl3_say382; DB 46 ;speech speed DB Voices6 ^system pitch setting DB 81,66,21 ;seqfi ir age4 DB FFH ;end Tbl3„say383: DB 46 ;speech speed DB Voice+7 ,-system pitch setting DB 134,134,25,19 ;seq7,0 ir age4 DB FFH ;end f lb?4_say384: DB 50 ;speech speed DB Voice+8 ;system pitch setting DB 34,78,145,145 ;seq9 ir age4 DB FFH ;end 50 ;speech speed Voice+8 ;system pitch setting 119,44,52,71,150 seqlO ir age4 FFH ? end SAY NUMBERS MODIFIED TO MATCH CORJtECT Tbl4_soy385: DB DB DB DB * speech speed ;system pitch setting ;SEQ'i,2,3,4,5 IR AGE4 DIALOGUE Tbld_say386: DB 46 ;speech speed DB Voice+0 ;system pitch setting DB 34,85,99 seqll ir age4 DB FFH ?end Tbl4_say387j DB 50 ; speech speed DB Voice+1 ;system pitch set ting DB 119,124, 31 ;seql2 ir age4 DB FFH ;end Tbl4_say388: DB 56 ; speech speed DB Voice+3 ;system pitch setting DB 162,63 ; s«aql4 ir age4 DB FFH ; end Tbl4_say389 DB 60 ; speech speed DB Voice-8 ;system pitch setting DB 161,164, 161 ;SEQIQ HANGING (YAWN] 1 DB 46 ;speech speed ; DB Voice+3 ;system pitch setting i DB 161,144,144 ;seq!5 ir age4 DB FFH ; end ; Tbll_say41 ; DB 46 ;speech speed f DB Voice+4 ;system pitch setting ; DB 143,144,143 p seql6 ir age4 ; DB FFH ; end ; Tbll_say42: I DB 46 ;speech speed ; DB Voice ;system pitch setting ; DB ; DB 4 FFH 1 end Tbl4_say39G ? DB 55 ;speech speed DB Voice+3 ;system pitch setting DB 165,165,144 r 165,144,165,144,165,144 DB FFH i end ;END IR ;END GEORGE ; ADDED BY DMH (FOR FURBV SAYS) Tbl4_aay391: DB 46 ;speech speed DB Voice ■ t system pitch setting DB 42 ; LIGHT (FURBY SAYS) DB FFH ; end ; ADDED BY DMH (FOR FURBY SAYS) A-244 Tbl4_say392: DB 52 ;speech speed DB Voice ;system pitch setting DB 60 j 42 ;no light DB FFH ;end Tbl4_say393 j DB 55 ;speech speed DB Voice ;system pitch setting DB 164,163,46 ; LOUD SOUND DB FFH ;end TbU_t?ay394 ; DMH DB 46 ;speech speed DB Voice ; system, pitch setting DB 164,163, 44 ; LISTEN IFUKBY SAYS) DB FFH ; end Tbl4_say3 95 DB 46 ;speech speed DB Voice ;system pitch setting DB 52,163 ;(ME1 with names (dmhj DB FFH ; end Tbl4_say396 DB 56 ;speech speed DB Voice ;system pitch setting DB 162,55 ;name (MEE MEE) (dmh) DB FFH ; end Tb 1 4„say397 DB 58 ;speech speed DB Voice ;system pitch setting DB 163,23 t fDO MOH) DB FFH ; end J Tbl4_say398 j DB 60 ;speech speed DB Voice ;system pitch setting DB 80 ;TOH-LOO DB FFH ; end Tbl4_say399 DB 60 ;speech speed DB Voice ;system pitch setting DB 165 f DELAY 1 SECOND DMH DB FFH ; end ; start of diagnostic tables dmh Tbl4_say400 i DB 0 ;speech speed DB Voice*16 ;system pitch setting DB 168,168,168 j used at start of diagnast DB FFH i end Tbl4_say401 DB 20 ;speech speed DB Voice+13 ;system pitch setting DB 169,165 ;key beep t DB DB i FFH ; end Tbl4_say402 DB 20 ;speech speed DB Voice+5 ;system pitch setting DB 169, ,163,169,163,169 ;pass test ; DB DB 2 FFH ; end r Tbl4_say403 DB 96 ;speech speed D3 Voice-40 ;system pitch setting DB 169,163 ;fail test tone DB FFH ; end Tbl4_say4Q4 : DB 46 jspeech speed DB Voice ;system pitch setting DB 169 ; speaker tone test DB FFH ; end Tbl4_say4Q5; DS 4 6 * speech speed DB Voice ;system pitch setting DB 163 ; no sound for start of motor cal DB FFH ;end Tbl4_say406: DB 20 \ speech speed DB Voice+5 ;system pitch setting DB 169,163,169,163,169 ;feedl DB FFH ■end Tbl4_say40"? s DB 20 ;speech speed DB Voice+5 ;system pitch setting DB 169,163,169,163,169 ;pass feed sw DB FFH ;end Tbl4_say408: DB 20 i speech speed DB Voice+5 ;system pitch setting DB 169,163,169,163,169 ;pass light test DB FFH ;end Tbl4_say4Q9: DB 20 ;speech speed DB Voice+5 ;system pitch setting DL 169,163,169,163,169 ;pass sound test DB FFH ;end Tbl4__say41G ; DB 20 ;speech speed DB Voice+5 ;system pitch setting DB 169,163,169,163,169 ;pass all test complete DB 15 9 DB FFH ;end Tbl4_say4l1: A-246 DB 60 ;speech speed ; HIDE HE (HIDE AND SEEK) DHM DB Voice+3 ;system pitch setting DB 31« 52 ; HIDE ME DB FFH ;end f Tbl4_say412: DB 100 ;speech speed DB Voice ; system pitch setting DB 167,167,167 ;SEQl FEED AGE1 tAAAA'H DB FFH ;end Tbl4_say413: J Tbl4_say414: Tbl4_say415: Tbl4_say4l6: Tfal4_say417: Tbl4_say418: Tbl4„say419: Tbl4_say420: Tbl4_say4 21: Tbl4_eay422: Tbl4_®ay423: Tbl4_eay424: Tbl4_say425: Tbl4_say426: Tbl4_say427: Tbl4„&ny42S r Tbl4_say429: Tt^4„ say4 30 ; i Tbl4_say43I; ; Tbl4_say432; Tbl4_say433: Tbl4_say434; Tbl4_say435: Tbl4_say436: i Tbl4„s«y437; A-247 TbU_say43S: Tbl4_say439: Tbl4_aay440: Tbl4_say441: ; Tbl4„say442; Tbl4_say443: Tbl4_say444: Tbl4_say44S: Tbl4_say44 6i Tbl4_say447 : Tbl4_say44S: Tbl4_say44 9i Tbl4_say450: Tbl4„say45l: Tbl4_say452: TbI4_say453: Tbl4__say4 54 : Tbl4_say455: Tbl4_say456 : Tbl4_say457; Tbl4_say458: Tbl4„say4 59: Tbl4_say460: Tbl4_say461: f Tbl4_say462: Tbl4_eay463; Tbl4_say464: Tbl4„say465; ; Tbl4_say466; ; Tbl4_aay467: A-248 TbI4_s«y468: 4 § Tbl4_say469: i Tbl4_s«y47{); Tbl4_jmy471s It>14„say472; f t Tbl4_Bay473: v I Tbl4_say474: l Tbl4_Bay475: ; Tbl4_aay476; Tbl4_aay477; r Tbl4_uay478; t Tbl4_say479i Tbl4„say480: Tbl4_say481; I Tbl4_say4 82: Tbl4_say483; Tbl4_say4S4: Tbl4_Bay4S5: if Tbl4_say486: Tbl4_say487; I Tbl4_say488: Tbl4_aay489: Tbl4_say490: Tbl4_say49l; ; Tbl4^say492: ; Tbl4_nay493: Tbl4_eay494: Tbl4_fiay495: J Tbl4_say496i ; Tbl4_say497; Tbl4__Bay498; r Tt>14_say499 : Tbl4_say500: Tfc>14_say501: l TbX4_say5Q2: Tbl4_say503i Tbl4_&ay5Q4; Tbl4_say505; Tbl4_sayS06i Tbl4_say507: Tbl 4 w Bay 5 0 8 : Tbl4_3ay5Q9: TbH„say 5 l 0 ; Tbl4_.say511; ; OU POWER UP, UNTIL WAKE-UP TABLE INSTALLED tBavs] DB 46 ;speech speed DB Voice * DS 165 DB FFH ; end ■ Motor tables ; OfEsett pointer : Motor^grpl: m DW dw DW DW DW DW DW DW DW dw DW DW TbXl_MOOO Tbl 1_M001,Tbll JM02,Tbn_M003,TbU_MG04,Tbll_MG05 TbU_H006,Tbll_H007,TbU_H008,Tb]lJ1009.Tbll_K010 Tbl1_M011,Tbl1_H012,Tbl1_M013,Tbl1_M014.Tbl1_H015 Tbl1_M016,Tbll_M017.Tbll_H0ia,Tbll J(019,TbU_K020 Tbll J4021,Tbl1„M022,Tbl1_H02 3,Tbl1_M024.Tfcll„M025 Tbl1_MG2 6,Tbl1_M027,Tbl1_M02 8,Tbl1_MC 29,Tbll_M030 Tbl 1 WO31,Tbl1_KG32,Tbl1J1033,Tbll_M034,Tbl1„H0 3 5 TblCw036,Tbll_M037,Tbll_M038,Tbll_M039,TbllJK040 Tbll HO 41 J Tbl 1 K042, Tbl 1_M043, TbllJfOM. Tbll JW045 Tbl1.JM04 6,Tbll„M047,Tbll_M048,Tfc 1 1_M049,Tbll„H050 Tbll_M051 ,Tbll_M052 , Tbll_J10 53 , Tbll J4G54 , Tbl 1_M051 Tbll_H056,Tbll_M057,Tbll_H058,Tbll_M0S9,Tbll_KG6G A-250 SBS'tS88SB88B | 888888888888888888888888888 | ggS gggggggg Tbll_M061 ,Tbll_H062 ,TbU J4063 ( Tbll_M064 ,Tbll_M065 Tbl 1JK06 6, Tbl 1_>!0 67 . Tbl 1_M0 68, Tbl 1 _H0 69, Tbll J107 0 i».1 1 Jim; Tfall M072 .Tbll K073. Tbll_H074 , Tbll_K075 TbllJt076iTb.il J1077 r Tbl 1JH07 8, Tbll_IW79 jTbllJweO TbU_M081, TbllJtOS2 , Tbll JI083, TbllJ40S4, Tbl 1_*10S5 Tbll_M086,TbllJtG87,Tb;: . JlQ88,Tbll JS06 ) ,Tbll_M090 Tbll JSQ91, Tbll Jt092, Tbll JtQ93, Tbll JtQ94, Tbll J1095 Tbll J109 6, Tbll JiQ97, Tbll J!Q9B ( Tbll J1099 TbllJ4100,TbUJ!101,^lij4102,TbllJtl03,TbllJll04 TbllJ)105, Tbll J5106, Tbll Jil07 ,TbllJJ108 (Tblljtl09 Tbll JtllO. Tbll Jtlll. Tbll J1112, Tbll Jtll3,TbllJtll4 Tbl 1JK115, Tbll_M 116, Tbl 1JU17 , TbU Ji US. Tbl1JJ119 Tbll Jil20 , Tbll J4121, TbllJK122 , Tbll Jtl23;*bllJ4124 Tbll M125," all_M126,Tbll.Ml27 Tbl2_M128 Tbl2J1129 Tbl2JI134 Tbl2Jtl39 Tbl2_K144 Tbl2 J514 9 Tbl2JilS4 Tbl2_M159 Tbl2_H164 Tb >4169 Tbl_J4174 Tbl2 JI179 Tbl2JJ184 Tbl 2..M189 Tbl2_M194 Tbl2_K199 Tbl2J)204 Tbl2_M209 TfcI2_K214 Tbl2Jt219 Tbl2J4224 Tbl2_H229 Tbl2_H234 Tbl2JK239 Tbl2 J5244 Tbl2Jt249 Tbl2_M234 ,Tbl2J4130 , Tbl2_M13 5 ,Tbl2_MH0 ,Tbl2_M145 ,Tbl2_M150 ,Tbl!J4l55 ,Tbl2Jtl60 ,Tbl2Jil65 ,Tbl2_M170 ,Tbl2Jfl75 ,Tbl2„M180 ,Tbl2_K185 ,Tbl2_M190 ,Tbl2„M195 ,Tbl2_M200 ,TbI2JI205 ,Tbl2J4210 ,Tbl2_K21S ,Tbl2_M220 ,Tbl2JH225 ,Tbl2Jt230 ,Tbl2Jt235 ,Tbl2_M240 ,Tbl2Jt24S ,Tbl2_M250 ,Tbl2_M255 ,Tbl2Jtl31 ,Tbl2_K136 ,Tbl2J4141 ,Tbl2_H146 ,Tbl2_M151 ,Tbl2_M156 ,Tbl2_K161 ,Tbl2J4l66 ,Tbl2 J1171 ,Tbl2_K176 ,Tbl2Jtl81 . Tbl2„M186 ,Tbl2 JI191 ,Tbl2„H196 ,Tbl2J4201 ,Tbl2„M206 ,Tbl2_M211 ,Tbl2_M216 ,Tbl2_M221 ,Tbl2_M226 ,Tbl2_K231 ,Tbl2_M23 6 ,Tbl2_H241 ,Tbl2„M246 ,Tbl2_M251 , Tbl2_M132 Tbl2_M137 ,Tbl2JM142 ,Tbli_M147 ,Tbl2Jtl52 ,Tbl 2 J11S7 ,Tbl2_M162 ,T112_M167 Tbl2_M172 ,Tbl2_M177 ,Tbl2J11S2 ,Tbl2„M187 ,Tbl2_M192 ,Tbl2_M197 ,Tbl2_M2G2 ,Tbl2_R207 ,Tbl2JI212 ,Tbl2J4217 ,Tbl2_K222 ,Tbl2_M227 t Tbl2_H232 ,Tbl2Jt237 ,Tbl2_M242 ,Tbl2_M247 ,Tbl2_H252 , Tbl2_M133 ,Tbl2_M138 ,Tbl2_M143 ,Tbl2 Jtl48 ,Tbl2_M153 Tbl2JtlS8 Tbl2_H163 ,Tbl2JH168 ,Tbl2 J4173 ,Tbl.2_M178 ,Tbl2_M183 ,Tbl2J41B8 , Tbl2_t.i93 ,Tbl2„K198 ,Tbl2_K203 ,Tbl2„M2G’8 ,Tbl2JS213 ,Tbl2_M21H ,Tbl2J4223 .Tbl-_M228 ,Tbl2Jt2 73 ,Tbl2_M2. ,Tbl2_M243 ,Tbl2_M248 ,Tbl2JM253 Tbl 3 JS256 Tbl3„H2S7 Tbl3„M262 Tbl3_M267 Tbl3_M272 Tbl3_M277 Tbl3_M2B2 Tbl3 Jt287 Tbl3_K292 Tbl 3 Jt297 Tbl3J4302 Tbl3_K307 ,Tbl3J!258 ,Tbl3_M263 ,Tbl3_M268 ,Tbl3_M273 ,Tbl3_H278 ,Tbl3Jt233 ,Tbl3„H288 ,Tbl3_M293 ,Tbl3_K298 ,Tbl3_R303 ,Tbl3J130S ,Tbl3_M25S ,Tbl3J12 64 ,Tbl3Jt269 ,Tbl3_H274 ,Tbl3_K279 , Tbl3_M284 ,Tbl3„M289 ,Tbl3J4294 ,Tbl3„M299 ,Tbl3_M304 ,Tbl3Jt309 ,Tbl3_M260 ,Tbl3„M265 ,Tbl3„«270 ,Tbl3_jM275 ,Tbl3 J5280 ,1»13_H285 ,Tbl3J1290 ,Tbl3_K295 ,Tbl3_R300 ,Tbl3„M305 ,Tfcl3_M310 ,Tbl3_K261 ,Tbl3„M266 ,Tbl3_M271 ,Tbl3_M276 ,Tbl3_M281 ,Tbl3_M7S6 ,Tbl3_H291 ,Tbl3_K296 ,Tbl3jH301 ,Tbl3_M306 ,Tbl3_M311 DW Tbl3„M312,Tbl3_M313 ( Tbl3_M3H,Tbl3JK315,Tbl3_M316 DW Tbl3„M317,Tbl3_M318,Tbl3_M319,Tbi3_M320,Tbl3_M321 DW Tbl3__M322,Tbl3_H323,Tbl3_M324,Tbl3_M325,Tbl3_M326 DW Tbl3_M327,Tbl3_M328,Tbl3^M329. Tbl3JW330,Tbl3_M331 DW Tbl3^332,Tbl3_M333,Tbl3_M334,Tbl3JH335 t Tbl3„M336 DW Tbl3_K337,Tbl3jmB,Tbl3_M339,Tbl3_J4340,Tbl3„M341 DW Tbl3J!342,Tbl3_H343,Tbl3J(344,Tbl3_M345,Tbl3_M346 DW 17)13_M347, Tbl 3_M34 8 , Tbl3_M349 , Tbl3 JW3 50, Tbl 3_M3 S1 DW Tbl3_H352,Tbl3J053 r Tbl3_K354,Tbl3_M355 < Tbl3_M3S6 DW Tbl3_JH357 ,Tbl3_M358,Tbl3_M359 ,Tbl3_M3 60 ,Tbl3_M361 DW Tbl3_M362,Tbl3_>!363,Tbl.3„M364 ( Tbl3. J M365,Tbl3_>066 DW Tbl3_J067 , Tbl3_JM36S , Tbl3_K369,Tbl3_M370,Tbl3_M371 DW Tbl3„M372,Tbl3_M373,Tbl3_K374,Tbl3_M375,Tbl3_H376 DW Tbl3_M377,Tbl3_M378,Tbl3_K379,Tbl3_M380,Tbl3_M381 DW Tbl3_M382,Tbl3_M383 I Motor_grp4: DW Tbl4_JW384 DW Tbl4,J!385 # Tbl4„H386 j Tbl4_M387 p Tbl4_M38a/Tbl4_H3B9 DW 90 , Tbl 009 1 1 Tbl4_H392 , Tbl4_M393 , Tbl4_M394 DW Tbl4_H39S t Tbl4__M396 , Tbl4_M397 , Tbl4_M398 , Tbl4_M399 DW Tbl4_K40G , Tbl4_J4401, Tbl4_M402 , Tbl 4^4 03 , Tbl4^H404 DW Tbl4_M4G5,Tbl4_M406 p Tbl4.J*4G7 1 Tbl4_M40B,Tbl4_M409 DW Tbl4 JM410 p Tbl4_M4 XI,Tbl4_M412,Tbl4_M413,Tbl4 J!414 DW Tbl4^4l5 p Tbl4^t41€,Tbl4_H417,Tbl4_M418 p Tbl4_M419 DW Tbl4^420 ( Tbl4_M421, Tbl4_M422, Tbl4_M423 ,Tbl4_H424 DW Tbl4 14425 f Tbl4,Ji426, Tbl4JM27,Tbl4J»«8 Tbl4_>J429 DW Tbl4JH430 ( Tbl 4_H43X f Tbl4 J4432 r Tbl4_K433 , Tbi4„M434 DW Tbl4_H43 5 , Tbl4_M4 3 6 t Tbl4_M4 3 7 , Tb14„H4 3 8 ( Tbl4„M4 3 9 DW Tbl4„M440,Tbl4_M441,Tbl4 J4442 ,Tbl4_M443 ,Tbl4_M444 DW Tbl4_M445 , Tbl4_M446 , Tbl4_M447 „ Tbl4_K448 f Tbl4_M44 9 DW Tbl4_M450 , Tbl4 J i 451 , Tbl4_M452, Tbl4_K453 P Tbl4_M45.4 DW Tbl4„M455 p Tbl4_J$456,Tbl4_M457,Tbl4_M458 H Tbl4_tt459 DW Tbl4_M460 1 Tbl4 MV .H461 t Tbl4„M4£2,Tbl4_M463,Tbl4_H4 64 DW Tbl 4_J*465, Tbl4_K4 66, ^14^4 67 , Tbl4_M4 69, Tbl4_M469 DW Tbl4 ^470*Tbl4^M47l p Tbl4^M472,Tbl4_M473 f Tbl4^.l74 DW Tbl4 M475,Tbl4_H476,Tbl4_M477,Tbl4_M47B,Tbl4_M479 DW Tbl4 J14 80 , Tbl4_M401,Tbl4_M482,Tbl4_M4 83,Tbl4_M4 84 DW Tbl4_M4 35 , Tbi4_M486, Tbl4,Jfl487 4 Tbl4^M4 80 , Tbl4_M4 B9 DW Tbl4_M490,Tbl4_M491,Tbl4 JS49 2,Tbl4_M493,Tbl4_M4 94 DW Tbl4_M495, Tbl4^496, Tbl4 J*497,Tbl4^M498, Tbl4„M499 DW Tbl 4^500, Tbl4_HS01 ,Tbl4_MS02 , Tbl4_M503 , TbX4_M5G4 DW Tbl4_H505 - Tbl 4 _M5G6 , Tbl4_MSQ7 , Tbl4_M5G8 , Tbl4_K509 DW Tbl4_M510,Tbl4„M511 Each motor table has the following format; The first line is the delay between motor steps. The next group of lines are the motor steps- The last line is the terminator command. Delay table - a number from 0 - 255. THe entry is multiplied by a 2,9 mSec timer. Therefore l=2.9mSec 2=5.8msec 2S5-739m£ec. The motor step is entered as a decimal number 10-190, t 00 * a PAUSE command base on the motor delay setting. A-252 ; 1 FF 1 or *255’ is the end of table command. ; TABLES WITH ENDING STEP NOT WITHIN REQUIRED RANGE (10-2OJ * (132, 13 6) M94,M127,M131,M139,M140,M143,M146 WITH DUPLICATE STEPS PUT CONSECUTIVELY ;Ml97,Ml9 3,M219,M2 2 0,M229,M2 37,M241,H242 ;M25O,M310,M32l,K369 TbllJMOOO: DB 50 /motor delay between steps DB 10,135 DB FFH ;end ;GEORGE 07/03/96 Tbll_M001: DB 1 DB 190,133 DB FFH Tbll_M002: DB 1 DB 150,145,139,: DB FFH ;end ;dON START SEQ1 AGE1 /motor delay between steps ;dON START SEQ2 AGE1 /motor delay between steps ,145,133,147,133 TbU_M003; DB 10 ;motor delay between steps DB 90,100,0,0,0,100,0, Q,0,0,133 /CONNECTED M23 ;dON START SEQ3 AGE1 . DB 145,160,0,0,0,160 DB FFH ;end Tbl1_M0O4: DB 1 /motor delay between steps DB 200,190,160,100,133 /CONNECTED M22 ;dON START SEQ3 AGE1 DB FFH /end Tbll_K005: DB 5 ,-motor delay between steps DB 170,130,90,100,133 ; DONE conected m22 seq4 agel DB FFH ;end * Tbll_M006: DB DB DB TbllJ*007; DB DB 10 /motor delay between steps 150,200,0,0,150,133 ;$eqS frontl agel FFH ;end 1 /motor delay between steps 120,150* 133 ;SEQ6 FRONT 1 AGE1 HORSE LAUGH FFH /end 10 /motor delay between steps 150,200,150,170,133 /SEQ7 FRONT AGE1 A-253 ; end DB FFH TtalUiQCS: DB 10 DB 150, DB FFH Tbll^MOlO: DB 1 DB 160, DB FFK Tblljmi: DB 1 DB 60/ DB FFH Tbll_^012: DB 10 DB 125 DB FFH Tbll_W013: DB 20 DB 145 DB 125 ' as m ;motor delay between steps ;motor delay between steps ;SEQ9,FRONT AGEl ;motor delay between steps r 0,0,133 jSEQlO,FRONT AGEl ; motor delay between steps ;motor delay between steps SAY2Q TO FRONT DB FFH ;end Tbll_MC14: DB steps DB SAY 22 DB Tbil_M0l5: DB steps DB SAY 2 2 DB Tbll_M0l6: DB DB DB Tbll_M017i DB DB AGEl ADD 37 DB Tbl1_M018: DB DB AGE1 ADD 37 DB 10 ; motor delay between 90,130,120,0,0, 133 ; seq!3 FRONT AGEl ADD FFH ;end 10 125,110,133 FFH ;end 1 ;motor delay between steps 160,0,0,133,125,150/133 ;seql5 FRONT AGEl FFH ;end 10 jmotor delay between steps 120,133,125,150,120,0,0,0,0,0,0,0,0,133 ;seql6 FRONT FFH fend 1 ;motor delay between steps 124,0,115,0,133,120,133 ;&eql6 FRONT FFH ;end ;motor delay between ;seq!4 FRONT AGEl ADD A-254 TfollJ*019: DB ; DB DB DB Tbll_K020: DB DB DB ; Tbll_MQ21 : DB DS ; DB DB Tbll_H022: DB DB DB i Tbll_M023r DB DB DB Tbll JM024: DB DB DB Tbl1_H025: DB DB DB DB Tbl1„K026: DB DB DB TbllJM027: DB DB DB §®F 10 ;mot or delay between steps 90,100,0,0,0,100,0,0,0,0,133 ;SBQ1 FRONT AGE2 17 5 ,16 0 , 0 , 0 , v , 160,0, Q , 0 , 0 ,133 FFH ? end 10 ? motor delay between steps 143,150,133,155,133 ;SEQ2 fRQNT AGE2 FFH ;end 1 ;motor delay between steps 180.133.180.133 100.70.10.133 ;SEQ3AGE2 FRONT ADD SEQ9AGE1 FFH ;end 10 ;mo tor delay between steps 140,150,133 ;SEQ4 AGE2 FRONT FFH ;end 1 ;motor delay between steps 120,133,0,0,0,0,0,0,0,140,150j133 ;SEQ4 AGE2 FFH ;end 5 ;motor delay between steps ;SEQ5 AGE2 FRONT 150,140,138,120,145,133,0,147,133 FFH ;end 1 ;motor delay between steps 150,200,0,0,150,133,143,133,143 133,110,133 ;SEQ6 AGE2 FRONT FFH ;end 10 ;motor delay between steps 142,150,133 ;SEQ 7 AGE2 FRONT PAKT1 FFH ;end 1 ;motor delay between steps ;S£Q 7 AGE2 FRONT PART2 150,145,160,133,145,133,145,133 FFH ;end ; danger always followed by 003: dmh Tbll,JflQ2S : DB DB DB 1 30,70 ; FFH <- OK ; end ;motor delay between steps -SEQ8 MIDDLE OF 22,AND 4SOMETHING f Tbll_M029: DB DB DB 1 190,133 FFH ; end ;motor delay between steps ;SEQ 9 TITTER A-255 f TbUj4030i DB 1 ;motor delay between steps DB 120,133,140,150,133 ; SEQ10 FRONT AGE2 DB FFH ;end Tblljmit DB 5 ;motor delay between steps DB 180,160,133,115.105,133 ;SEQ11 FRONT AGE 2 ADD 41 DB FFH ;end Tbll_M032: DB 10 ;motor delay between steps DB 145,133,145,133,145,133,0,120,115,133 DB FFH ;SEQ12 FRONT AGE 2 ADD 20 Tbl1_M033; DB 1 ;motor delay between steps DB 150,170,190,133,120,133,135,133,150,0,0,133 ;SEQ14 FRONT DB FFH ;end Tbl1_M0 34: DB 10 ;motor delay between steps DB 125,0,0.0,0,0, 133,145,133 ;BEQ15 FRONT AGE2 ADD 20 DB FFH ;end Tbll„M03 5 % DB 1 ;motor delay between steps DB 120,0,0.0,0,0. 0,0,133,145 DB 133,0,150,133, 110,133,120,0,0,133 ;SEQ16 FRONT AGE2 ADD 20 DB FFH ;end Tbl t JWO 3 6 ; DB 1 ;motor delay between steps DB 155,0,0,0,133 ;SEQ1 FRONT AGE3 DB FFH j end Tbl1„MG37: DB 1 ;jnotor delay between steps DB 140,150,133,120,133,110,133 ;SEQ2 FRONT AGE3 DB FFH ;end Tbll J403B: DB 1 ;motor delay between steps DB 155,0,0,0,133 155,0,0,0,133 ;SEQ3 FRONT AGE3 DB FFH iend Tbll_M039 s DB 1 ;motor delay between steps DB 190,0,0,133 ;SEQ4 FRONT AGE3 DB FFH iend ; ERROR ?TbU_M040 ; } DB 10 ;motor delay between steps ; DB 140,150,133 ;SEQ5 FRONT AGE3 ADD SEQ14AGE1 ; DB FFH ;end A-2S6 Tbll^H040; DB 10 ;motor delay between steps DB 150,200,0,0,150,133,143,133 DB 143,133,110,0,0,133 ;SEQ6 FRONT AGE3 DB FFH ;end Tbll_M041: DB 1 ;motor delay between steps DS 160,140,0,150,133,160,140,133 DB 150.160,133 i SEQ7 FRONT AG E3 DB FFH ;end Tbll_M042: DB 1 ;motor delay between steps DB 30,70,120 ;SEQ? ; DB 160.140,0,150.133,160,140,133 DB FFH ;end J TbIlJM043: DB 10 ;motor delay between steps DB 80,0,150,0,125,0.0,133 ;S£Q10 FRONT AGE3 DB FFH ;end Tbll„M044: DB 1 ; motor delay between steps DB 100,133.120,133 ;SEQ11 DB FFH ;end TbU_M045: DB DB (HEEY,TICKLE DB Tbll_M046: DB 10 \motor delay between steps DB 145,133,145,133,145,133 ;5EQ13 fRDNT AGE3 (NANNY,NANNY] ADD20 D3 FFH ;end TbU_M047 : DB 1 ?motor delay between steps DB 125.0,130,0.0,90,133 ;£EQ13 fRONT AGE3 (RASBERRY, HE HE HE } ADD2 0 DB FFH ;end Tbll_M048: DB DB DB 1 200,0,0,133 FFH ;end ;motor delay between steps ; SEQ16 FRONT AGE3 Tbll_M049i DB DB DB 1 120,110,133,115 FFH ;end ;motor delay between steps ,133 ;SEQ16 Tbll_M0SGi DB DB 10 140,150,133 ;motor delay between steps SEQ2 (TICKLE) FRONT AGE4 10 ;motor delay between steps 150,0,0,133,120,100.133 ;SEQ12 FRONT AGE3 ME I ADD2^ DB 4 FFH ;end DB FFH ; end Tbll_M051 : DB DB DB 10 125,100 ,133 FFH ;end ; motor delay between steps ; SEQ2 (AGAIN) FRONT AGE4 Tbll__M052: DB DB DB 1 120 ( 133 FFH ;end ;motor delay between steps ;SEQ3 (YOU) FRONT AGE4 i Tbll_H053: DB DB DB 10 160,133 FFH ;end ;motor delay between steps ;SEQ3 (ME) FRONT AGE4 Tbll_M054: DB DB DB 20 150,133 FFH ;end ;motox delay between steps • SE04 (LOVE) FRONT AGE4 &DD45 74 71 20 Tbl1_M055: DB DB ADD26 DB 10 135,133,150 n, FFH ;end ;motor delay between steps 0,133 ;SEQS (HE HE HE) FRONT AGE4 Tbll_M056: DB DB AGE4 ADD26 DE 1C 154.133,115,0, FFH ;end ;motor delay between steps 0,0,0,0,0,133 jSE05 (BIG FUN] FRONT Tbl1_M057 ; DB DB DB 10 120,13 3 FFH t end ;motor delay between steps ;SEQ& (NO) FRONT AGE4 Tbl1_J40 53: DB DB DE 1 100,133 FFH ;end ;motor delay between steps } SEQ& (PLEASE) FRONT AGE4 TbllJ*G59: DB DB DB 10 150,0,0,0,133 FFH ;end ;motor delay between steps ; SEQ9 (KEEY) FRONT AGE4 ADD71 Tbl1_M0 60: DB DB DE 1 120,100,133 FFH ;end ;niotor delay between steps ;SEQl4 (PARTY) AGE4 ADD45 Tblljtf06l; DB DB DB ; END GEORGE JO jmoLor delay between steps 143 , 150,170,133 ;SEQ15 (WA WA WA1 FRONT AGE 4 ADD22 FFH ;end 07^03/98 A-258 ; { BOTTOM ) ;GEORGE 07/04/98 Tbl1_MQ 62: DB 20 DB 150,0,0,0,133 DB FFH ;end TblU40 63i DB 1 DB 150,0,0,133 DB FFH ;end TbU_M064: DB 1 DB 150,0,0x0,133 DB FFH ;end Tbl1_H065: DB 10 DE 190,150,0,0,133 DB FFH ;end Tbl1_MQ66; DB 1 DB 120,0,0,0,0,0,0,0,0,133 DB FFH ;end ; motor delay between steps ; FORTUNE ASK ; motor delay between steps ;FORTUNE ASK ;motor delay between steps ;FORTUNE TELL (BIG} ;motor . between steps ; FOB TUI .~iM (VERY, BIG) ;motor delay between steps ;FORTUNE TELL lSEE! ; danger always followed by 68; dmh Tbll_M0fi7: DB 10 i motor delay between steps DB 30,10,30,10,30, 10,70 OK ; FORTUNE WHINE STAR DB FFH ;end Tbl1„MQ 68: DB 1 ;motor delay between steps DB 100,133,150,133,150,133 ;FORTUNE WHINE START DB FFH ;end Tbll„K06S: DB 1 DB 150,133 DB FFH ;end Tbll_N070: DB 1 DB 125,100,133 DB FFH t end ,'motor delay between steps ;FORTUNE TELL ( NO} ;motor delay between steps ;FORTUNE TELL (WORRY1 Tbl1_M071; DB 10 DB 110,120,133 DB FFH j end Tbll_M072; DB 1 DB 150,133 DB FFH ;end i motor delay between steps ; FORTUNE (SOUND! ;motor delay between steps ;FORTUNE (GOOD} Tbl1_M073: DB 1 DB 150 1 0 r 133 DB FFH ;end Tbll_M074: DB 1 motor delay between st eps DB 145*133j150*0,0,0,0,0,133 ;FORTUNE (WHOOPEE) DB FFH ;end Tbl1_M075: DB 1 ;motor delay between steps DB 115,133 ;FORTUNE (GOOD) DB FFH ;end Tbll„M076: DB 1 {motor delay between steps DB 120,0,0*0*0,133 ;FORTUNE (RASPBERRY) DB FFH ;end Tbll„MQ77: DB 1 ?motor delay between steps DB 150,115,133 ,' FORTUNE (OH OH) DB FFH ;end Tbl1_H073; DB 1 DB 150,115,133 DB FFH ;END GEORGE 07/04/93 ;START HANGOUT ;GEORGE 07/04/98 Tbl1_M079: DB 1 ;meter delay between steps DB 150,133,135, ISO, 133 ;SEQ1 HANGING (DE DE DE , DUH DUN DUM DUM) AGE1 DB FFH jend Tbl1_M0S0: DB 1 motor delay between steps DB 190,133 ; SEQl HANGING (DUM DUM DUM DUN) AGE1 DB FFH ;end TbltJKOfil: DB 1 DB 120,100,133 DB 120,100,133 DB FFH ;end Tbll_M062: DB 1 ;motor delay between steps DB 143,150,170*0,0,0,0,190 ; -133 ■ DB 120,100*160,133 ;SEQl HANGING (YA DA DA I DB FFH ;end Tbl1_M083 i DB 1 ;mot ®lay between steps motor delay between steps ;SEQl HANGING (bEEDO) motor delay between steps ;FORTUNE (MAY BEE) ; end A-260 ; SEQ3 HANGING ( OMPAH bRUHM DB 190,120 ,133 DB 150 ,133,150,133 BABABUM) DB FFH ;end Tbll_N084; DB 10 ; motor delay between steps DB 125,120,125,115,133 ; SEQ3 HANGING (bRUMM BABABUM) DB FFH t end Tbll_M085: DB 1 ;motor delay between steps DB 115,125,110, 25,100,133 ;SEQ4 HANGING (LA LA) DB FFH ; end Tbll„H0a6: DB 1 ;motor delay between steps DB 120,130,115 ;SEQ4 HANGING lLA LA) DB 100,125,115,125<115,125,115,125,115,133 DB FFH ;end Tbl1_M0 87: DB 1 ;motor delay between steps DB 120,0,0,0,0,0,0,0,133 ;SEQ5 HANGING iHUMM BO DAH WAY- LGH> DB FFH ;end \ Tbll_M088i ; DB 10 ;motor delay between steps j DB 115,133,139,155,160,133 ;SEG5 HANGING (HUMM BC DAH WAY- LOH) I DB FFH ;end TbllJK088: DB 10 ; motor delay between steps ;DB 115,133,139,155,160,133 ;S£Q5 HANGING (HUMK BO DAH WAY- LGHI DB 115,133,160,133 ;SEQ5 HANGING (HUNM BO DAH WAY-LOH) DB FFH i end TblljM089: DB 60 ;motor delay between steps DB 190,170 H 150,133,0,0,0,0,0,0 ;SEQ6 HANGING (SNORE) DB FFH ;end Tbll„N090: PB 10 ;motor delay between Steps DB 150,133 ;SEQ6 HANGING (SHOUT) DB FFH ;end Tbll_M091: DB I ; mo tor delay between steps DB 143,150,140,0,150,0,0,133 ;SEQ6 HANGING (OK KAH) DB FFH ; end Tbil_M092: D8 5 ;motor delay between steps DB 110,133 ;SEQ6 HANGING (U-TYEi DB FFH ;end I A-24J TblI__MQ93 i DB 60 ?motor delay between steps DB 190,180 *170,150.133 ;SEQ7 HANGING (SOFTERJ DB FFH ;end ; danger sleep TbUj*094: DB 50 DB 190,170,150 ,10 DB FFH ;end ;motor delay between steps ;SEQ7 HANGING (SOFTER) Tbll„M095; DB 20 DB 145,133,115,0,133 DB FFH ;end ;motor delay between steps ;SEQ8 HANGING ADD 76 Tbli_MG96; DB 1 DB 150,115,150,133 DB FFH ;end ; motor delay between steps ;SEQ9 HANGING (DO BE DOBE DO) Tbll_M097: DB 4 6 (YAW) DB 46 ;motor delay between steps DB 170,0.0,0,200,150,0,0,150,0,133 ;SEQ10 HANGING i DB FFH ;end Tbl1_M098: DB 255 DB 150,133 DB FFH ;end ;motor delay between steps ;SEQ11 AND EEQ12 HANGING (SIGH) Tbl1_MQ99; DB 1 DB 144,133 DB FFH ;end ;motor delay between steps ;SEQ13 SEQ14 HANGING (HA I Tbll_KlG0: DB 10 DB 104,0,0,0,133 DB FFH ;end ;motor delay between steps Tbl1_M101; DB 20 DB 100,133,0,0,0,100,133 DB FFH ;end ,■ motor delay between steps ,SEQ16 .anger. USED IN ONE CASE, HANGING OUT, FOLLOWED BY 101 Tbl1„M102i 10 ;motor delay between steps DB 0 ;SEQl6 HANGING (PAUSE) ADD20 DB FFH ;end Tbl1J3103 : DB 1 DB 114,133 DB FFH ;end ;motor delay between steps ?SEQ6 HANGING (UP) Tbl1_M104: DB 1 ;motor delay between stt^s A-262 DB 120,133 DB FFH ; end Tbll_Ml05: DB 1 DS 120,133 DB FFH ;end TbllJW106; DB 10 DB 125,104,133 DB FFH ;end ;SEQ6 HANOING (ME) ; mot or ds^ay between steps ; UP ;motor delay between steps rS£Q5 BORIN^ ; END HANGOUT ; danger, OK PAUSE FOR FORTUNE TELLING Tbll_MlQ7; DB 1 jmotor delay between steps DB * DB r'H jend ; Fortune pause ;END GEOROE 07/04/98 f FEED ;GEORGE 07/05/98 Tbll_M108: DB 10 ; motor delay between steps DB 115,0,0,0,0,0,0,0,0,0.0,0,0,0,0 DB 0,0,0,0,0,0,0,0,0 ( 0 P C,0 ( 0,0,0,0,0 DB 133 ; SEQl FEED AGEl (UUKKMMM) DB FFH ;end TbllJH109i DB 1 ;motor delay between steps ; DB 140 DB 165,0,0,0,0,0,0,150,0,0,165.0,0.0,0,0.0,133 ;SE2I FEED AGEl (AAAAH r DB FFH fend Tbll_Ml10: DB 1 ; mo tor delay between steps DB 120,130,110,133 ;SEQ2 FEED AGEl (KOH KOH) DB FFH ■ end 1 Tbll_Mlll j DB 1 ;motor delay between steps DB 120,130,120,133 ;ME ME DB FFH ,'end Tbll_Mll2: DB 1 jmotor delay between steps DB 145,133,150,133 ;E-DAY DB FFH . end tbUJU13: DB 1 ;motor delay between steps DB 115,130,110,133 ;DO MOH DB FFH ;end i:ll_M114: A-263 DB 1 ;motor delay between steps DB 115,130,120,133 fTOH DYE DB FFH ;end TbnjQlS: DB 10 ;motor delay between steps DB 110,133 ;BURP DB FFH ;end TbllJUUs DB 1 ;ms.or delay between steps DB 145,133 ;SIGH DB FFH f end Tbll_Mll7: DB 10 fUOtor delay between Steps DB 150,133 DB FFH ;end ; Tblij*iia* DB 10 ;motor delay between steps DB 120,0,0,0,133 DB FFH jend Tbl1_M119: DB 1 ;motor delay between steps DB 120,130,110,133 ;TQH LOO DB FFH ;end TbllJ*l20; DB 1 ;motor delay between steps DB 120,133,120,133 DB FFH ;end Tbll_M121: DB 1 .motor delay between steps DB 145,130,120,133 ;HUNGRY DB FFH ;end Tbll„Kl22: DB 1 jmotcr delay between steps DB 150,133 ;LIKE DB FFH ? end TblJ_M123: DB 1 fmotor delay between steps DB 150,0.0,133 ;seq4 feed done DB FFH ;end ;END FEED ;END GEORGE 07/05 90 ; WAKE ;GEORGE 07/06/90 Tbll__H124i ;SG DONE DB 255 ;motor delay between steps DB 95,133 DB FFh ; danger A-264 ;SG DONE 1 t motor delay between steps 75,30 OK F^h ; SG rxm ;motor delay between steps 135,120,135 ;SG DONE rmotor delay between steps 80,133 Tbll^M125i DB BB DB Tbll_^126: BB DB DB FFh Tbll_M127: DB 1 DB DB FFh ; danger Tbl2_Ml28: DB 1 DB 75,90 DB FFh Tbl2 m >1129: DB 1 DB 90,110,133 ;DB 90,110,70 DB FFh Tbl2_Ml30j DB 1 DB 115,133 DB FFh ; danger Tbl2_Ml31: DB 1 DB 90,70 DB FFh Tbl2_Ml32; DB 1 DB 95,133 DB FFh TJbl2_Ml 33; DB 1 DB 115,133 DB FFh ; danger Tbl2_Ml34: DB 1 DB 185 DB FFh ; danger Tbl2J*135: DB 1 DB 133 DB FFh ; danger Tbl 2__M136! DB 1 DB 133 ;SG DONE ;motor del^y between steps ;<-OK iSG DONE ; motor delay between steps ;SG DONE lmotor delay between steps ;SG DONE ;motor delay L ween steps ;SG DONE ; motor delay between steps ;$G DONE ;motor delay between steps ;SG DONE ;motor delay between steps jSG DONE ;motor delay between steps ;SG DONE ;motor delay between steps Tbl2^U37: DB DB DB ; danger Tbl2_Ml38: DB DB DB DB ; danger Tbl2 w Ml39; DB DB DB ; danger Tbl2_M14 0: DB DB DB rSG DONE 1 ;motor delay between steps 145 F rh ;SG DONE 1 ; motor delay between steps 120 , 133 , 120 , 133 , 120 , 133 , 120 , 133 , 120 , 133 , 120 , 133 , 77 , 8 * 0 , 0 , 70 , 0 , 0 , 0 , 0 , 0,0 FFh l SG DONE 1 ; motor delay between steps 82.70 FFh ;SG DONE 1 ;motor delay between steps 120 . 115 . 130 . 120.70 FFH ;end ; danger Tbl2„Ml4l: DB 1 DB 133 DB FFH ;end ; danger Tbl2_Ml42: DB 1 DB 75 DB FFH ;end Tbl2_Ml43i DB 1 ; DB 90,80,100,75 DB 90,80,100,133 DB FFH ;end ;SG DONE rmotcr delay between steps ;S DONE ;motor delay between steps ;SG DONE ^motor delay between steps ; danger Tbl2 fc Ml44 i DB 1 DB 120 DB FFH }end i ; danger Tbl2_Ml4 5 ; DB 1 DB 110,75 DB FFH ;end Tbl 2,jH14 6: DB 1 ;DB 90,75 ;SG DONE ;motor delay between steps ;SG DONE ;motor delay between steps tSG DONE ;motor delay between steps DB DB 4 ;danger Tbl2_Ml47: DB 90,133 FFH f end ;SG DONE ;motor delay between steps A-266 l DB DB Tbl2_m4S * DB DB DB i danger Tbl2_M149i DB DB DB Tbi2_M150; DB DB DB Tbl2_Ml5l; DB DB DB i danger Tbl2_Ml52i DB DB DB 70 , 90,75 FFH ;end ;SG DONE 1 ;motor delay between steps 120 , 130 , 115 , 126 , 115 / 140 , 110 , 0 , 0 , 0 , 0 , 0 , 0 . 0 , 0 , FFH i end 1 75 FFH ;end 1 146,135 FFH ;end 1 120,133,70,0, 135 FFH ;end ;SG DOME 1 ;motQr delay between steps 75 FFH ;end ;SG DONE ;motor delay between steps ; SG DOME ;motor delay between steps ;SG DONE 'motor delay between steps ; danger Tbl2__H153: DB 1 DB 115,75 DB FFH ;end ; danger sleep Tbl2_Ml54: DB 100 DB 0,0,0,85,30,0,20,0,85,30,0,20, DB 30,0,20,0,10 DB FFH ;end j danger Tbl2_Kl55: DB 1 DB 90,70 DB FFH ;end ; danger Tbl2_J*156: DB 1 DB 115,75 DB FFH ;end ;END WAKE ;END GEORGE 07/06/98 ; SG DOME ; motor delay between steps ; SG DONE ;motor delay between steps 0,85,30,0,20,0,75,0,0,0,0 f 85 ;SG DOME ,-motor delay between steps ;SG DONE ;motor delay between steps ; HUNGER ;GEORGE 07/06/98 TB12JM157; ; SG DONE ; HUNGER ,133 A-267 DB 50 ;DB 120 1 120,133 DB 120,0,133 DB FFH ;end Tbl2_M15S; DB 1 DB 180,133 DB FFH ;end Tbl2_Ml59; DB 1 DB 115,110,133 DB FFH ;end Tbl2_M160: DB 1 DB 75,133 DB FFH ;end Tbl2 JHl61: DB 1 DB 115,130,115,1 DB FFH ;end Tbl2_Ml62: DB 1 DB 115,110,133 DB FFH , ;end Tbl2_Ml63i DB 50 DB 190,133 DB FFK ;end Tb12_M164: DB SO ;DB 148,148,133 DB 148,0,133 DB FFH jend Tbl2„Hl65; DB 50 ;DB 150 t 150,150, DB 150,0,0,133 DB FFH ;end Tbl2_H2 66: DB 1 DB 120,133 DB FFH ;end Tbl2„Ml67: DB 1 DB 115,133 DB FFH ;end Tbl2_M168: ;motor delay between steps ;SG DONE ;motor delay between steps ;SG DONE ; motor delay between steps ;SG DONE ;motor delay between steps ;SG DONE ;motor delay between steps ; SG DONE ;motor delay between steps ;SG DONE ;motor delay between steps ; SG DONE ;motor delay between steps ; SG DONE ;motor delay between steps 33 ;SG DONE motor delay between steps ;SO DONE ;motor delay between steps ;SG DONE A-268 DB 1 ; motor delay between steps DB 115,133 DB FFh O 1 07/06/98 iEtJD HUNGER ;INVERT ;GEORGE 07/07/98 Tbl2_M169: ; SG DONE ; INVERT DB 1 ;motor delay between steps DB 110, 122, 75,130,117,133 DB FFH ; end Thujnno-, ;SG DONE DB 10 ; motor delay between steps ; DB 165,165,133 DB 165,0,133 DB FFH ;end Tbl2_Ml71: ; EG DONE DB 10 ;motor delay between steps DB 105,133 DB FFH ; end Tbl2„Ml?2: ;SG DONE DB 1 ;motor delay between steps DB 150,133 DB FFH ; end Tbl2_JK173; ;SG DONE DB 1 ;motor delay between steps DB 155,190,133 DB FFH ; end Tbi2_M174: ;SQ DONE DB 1 ;mctor delay between steps DB 145,133 DB FFH t end ! Tbl2_J*l75r ;SG DONE DB 1 ;motor delay between steps DB 150,135,145,133 DB FFH ; end TblZjniS: ;SG DONE DB 1 ;motcr delay between steps DB 75,133 DB FFH ; end Tbl2_Ml77: ;SG DONE DB 1 ;motor delay between steps DB 110,133,115,133 DB FFH j end Tbl2_Ml78 t ; SG DONE * DB 1 ;motor delay between steps DB 115,133 Tbl2„Ml79; ;SG DONE DB 1 ;motor delay between steps DB 115,133 DB FFH ; end Tbl2_HlSQ: ;SG DONE DB 1 ;motor delay between steps DB 110,125,115* 133 DB FFH ; end Tbl2_Ml81: jSG DONE DB 1 ymotor dt,ay between steps DB 150,133 DB FFH ; end Tbl2_K182: ;SG DONE DB 1 rmotor delay between steps DB 115,133 DB FFH * end Tbl2_M183: ;SG DONE DB 1 ;motor delay between steps DB 115,130,110,133 D8 FFH ; end Tbl2_KlS4i ;SG DONE DB 1 ; motor delay between steps DB 75,133 DE FFH ; end Tbl2_Ml85 j fSG DONE DB 1 ; motor delay between steps ; DB 150,150,133 DB 150,0,133 DB FFH ;end Tbl2_M186; ;SG DONE DB 1 ; mo tor delay between steps DB 115,130,115, 133 DB FFH ; end Tbl2187 : ;SG DONE DB 1 ; motor delay between steps DB 115,130,115, 133 DB FFH ;end Tbl2j*lBS: ;SG DONE DB 1 ;motor delay between steps DB 14 5,135,14 5, 133 DB FFH end Tbl2_Ml89: ;SG DONE DB 1 imotor delay between steps DB 120,105,133 DB FFH i end ; Tbl2__Ml 90: A-27Q d a i DB 155,190,133 DB FFH ;end Tbl2_Ml91i DB 1 DB 155,190,133 DB FFH ;end ; mot or delay between steps ;motor delay between steps J_M192? DB 1 ; mo tor delay between steps DB 155,190,133 DB FFH ;end ;END GEORGE 07/07/98 ;EMD INVERT ;start at 202 Tbl2_M193: DB ;DB DB DB ;BACKSG ;SG DONE 100 ; motor delay between steps 200,200,200,200,133 200,0,0,0,133 FFH ;end Tbl2_M194; DB 1 DB 75,133 DB FFH ;end ;SG DONE ;motor delay between steps Tbl2_Hl95: ;SG DONE DB 1 ;motor delay between steps DB 115,125,115,133 DB FFH ;end Tbl2_Ml96: ;SG DONE DB 10 ;motor delay between steps DB 148,133 DB FFH ; end Tbl2JM197: ;SG DONE DB 1 ;motor delay between steps DB 115,125,115,133 DB FFH ; end Tbl2jH98i DB 100 DB 145,0,0,133 DB FFH ;end Tbl2_Ml99: DB 10 DB 110,133 DB FFH ;end ;SG DONE ; mo tor delay between steps ;SG DONE ;motor delay between steps Tbl2_K200i DB 1 DB 75,133 DB FFH ;end ;SG DONE ;motor delay between steps Tbl2_K2 01: DB 10 gum ;SG DONE ,‘mctjr delay between steps Mi- A-271 DB DB Tbl2_M2G2: DB DB DB ; danger Tbl2_M203: DB DB DB Tbl2„M204; DB DB DB Tbl2_M2Q5: DB DB DB i ; danger Tbl2_M20 6: DB DB DB ; danger Tbl2„M2Q7; DB DB DB Tbl2_M20B: DB DB DB Tbl2 JM209 : DB DB DB Tbl 2__M210 t DB DB DB ; danger Tbl2_M211; DB DB DB ; danger Tbl2_M212; DB DB DB 115.125.115.133 FFH :end ;SG DOME 1 ;motor delay between steps 75.133 FFH ;end , J DONE 1 ; motor delay between steps 120,128 r 79,133,146,0,0,0,133,145 FFH ;end ;SG DONE 10 ;motor delay between step-, 190,0,133 FFH ;end j SG DONE 1 ; motor de /iy between step 115,133 FFH ;end ;SQ DONE 1 ;motor delay between steps 75 FFH ;end t SG DONE 10 *motor delay between steps 150 FFH i end ;SG DONE 10 ; motor delay between steps 75„133 FFH t end ;SG DONE 100 ;motor delay between steps 150,0,0,0,133 FFH ;end j SG DONE 10 ;motor delay between steps 123,110,75,133,115,133 FFH ;end 1 75 FFH ;end 1 133 FFH ;end i SG DONE ;motor delay between steps ,-SG DONE ,-motor delay between steps s£ A-272 Tbl2_M213: DB DB DB 10 115,150, FFH , 133 ; end ;SG DONE ; motor delay between steps Tbl2_M214; DB DB DB 1 80,133 FFH i end ;SG DONE ;motor delay between steps J ; danger Tbl2_H215: DB DB DB 100 138 FFH ;end ;£G DONE ; motor delay between steps Tbl2_M216; DB DB DB 10 75,133 FFH :end ?motor ;SG DONE delay between steps Tbl2„M2l7: DB DB DE 1 115,130,115,133 FFH iend ;SG DONE .motor delay between steps Tbl2_M218: DB DB DB 50 114,133 FFH ; end ;SG DONE ;motor delay between steps Tbl2_M219 s DB 10 ;mo tor ,-SG DONE delay between steps ; DB 120 , 130,120,130 r 120,130 ( 120,130,120,130,120.130,115,115,133 DB 120.130,120,130,120.130,120,130,120,13C,120,130,115,0,133 DB FFH ;end Tbl2j^220i ;SG DONE DB 10 ,-motor delay between steps ;DB 120#130,120,130,120,130,120,130,120,130,120,130,115,115,133 DB 120,130,120,130,120,130*120,130,120,130.120,130,115,0,133 DB FFH ;end Tbl2_M221: DB 10 DB 115,133 DB FFH ;end ;SQ DONE ; motor delay between steps Tbl2_M222: DB DB DB ;SG DONE 50 ;motor delay between steps 0,0,0,0,115,133 FFH tW& Tbl2 JK223 : DB DB ;SG DONE 1 ;motor delay between steps 115.125,115,133 m FFK ; end Tbl2_M224; ;£G DONE DB 1 /motor delay between steps DB 75,133 DB FFH i end Tbl2_H225: ;SG done DB 1 /motor delay between steps DB liO,133 DB FFH ; end Tbl2_M226: ;SG DONE DB 100 ;motor delay between steps DB 120,133 DB FFH ; end Thl2_K227; ;SG DONE DB 30 ;motor delay between steps DB 190,120 ( 125 ,120,125,120,125,133 DB FFK ; end Tbl2_M22 B: ;SG DONE DB 1 ;motor delay between steps DB 115,130,110 , 130,115,133 DB FFH ; end Tbl2_M229; ;SG DONE DB 30 ;motor delay between steps ; DB 115,120,11 0, 110,110,133 DB 115, 120/110 ,0,0,133 DB FFH ;end TbI2_M23Q: ;SG DONE DB 1 ;motor delay between steps DB 110,125,115 , 133 DB FFH ; end Tbl2_M231; ;£G DONE DB 1 ;motor delay between steps DB 75,133 DB FFH ; end Tbl2_M232: ;SG DONE DB 1 /motor delay between steps DB 110,133 DB FFH ; end ; danger Tbl2_H233: ;SG DONE DB 1 /motor delay between steps DB 145 DB FFK ; end # ; danger sleep Tbl2_M234 \ ;5G DONE DB 10 /motor delay between steps DB 10 DB FFH ? end Tbl2_M235 % ; SG DONE A-274 DB 10 ;motor delay between steps DB 115,123,110,133 DB FFH ;end Tbl2^M236i DB 10 DB 115,133 DB FFH ;end ;motor delay between steps Tbl2„J*237 ; jSQ DONE ;SICK2 DB 100 ; motor delay between steps ;DB 133,140,140,150,150,180,133 DB 13 3,140,0,150,0,ISO, 133 DB FFH ;end Tbl2_M23S: DB DB DB FFH 120.110,133 ;end ;SG DONE imotor delay between steps Tbl2_M239; DB DB DB FFH 115,133 ; end t SO DONE ;motor delay between steps Tbl2_M240: DB DB DB FFH 10 115,0,0,0,0,133 i end :SG DONE tor delay between steps TbJ2*Jl241: ; 3 DONE DB l -r it or delay between steps ;DB 124,133,120,133,115,115*0,0,133 DB 124,133,120,133,115,0,0,0,133 DB FFH ;end Tb!2„H242: ;SG DONE DB 50 ;motor delay between steps ;DB 115,70 # 120,120,133 DB 115,70,120,0,133 DB FFH ; end ; danger Tbl2_H243; DB DB DB 50 70 FFH ;end ;SG DONE ;motor delay be t ween steps Tbl2_M244: DB DB DB FFH 5 n 120,133 ; end ;5G DONE ;motor delay between steps Tbl2_M24S: DB DB DB 50 75,133 FFH ;end ; SG DONE ; motor * ' / between steps Tbl2j*246: DB m # - ;SG DONE ;motor delay between steps 10 DB DB Tbl2_M247 ? DB DB DB Tbl2_M248: DB DB DB 70,133 FFH ;end ;SG DONE 1' ;motor delay between steps 110,133,0,0 FFH ;end ;SG DONE 10 ;motor delay between steps 145,0,0,0,133 FFH ;end Tbl2_M249; DB 1 DB 115,0,0,0,133 DB FFH ;end ; SG DONE ;motor delay between steps Tbl2„M25Q: DB r DB ;SG DONE 10 ;motor delay between steps 150,150,150,190,0,133 DB 150,0,0,190,0,133 DB FFH s end ;GEORGE 07/09/98 ;LIGHT Tbl2_M251: DB DB DB Tbl2_M252: DB DB DB Tbl2_M253: DB DB DB Tbl2_M254: DB ; DB 143,137. ^3,137,150,133,155,133 DB 143,137,143,137,150,0,0,0,133,155,133 DB FFh Tb!2_H255i DB 1 ;motor delay between steps DB 60,90,60,85,90,60.90,133 DB FFh Tbl3j4256: DB 10 ; mo tor delay between st DONE RB DB 180,165,185,133 DB FFh Tbl2jOS7t DB 10 ;motor delay between steps DB 190,133,105.133,105,160,133 ;WOW DONE DB FFh Tbl3LM258: DB 4 ,-mot-ir delay between steps DONE DB 60,133,0,0,0,0,0,155,133,14S,133 5 ;motcr delay between steps SGTEST 115,132,125,110,132 FFh 1 ; mot or delay between steps 190,133 FFh 1 } motor delay between Steps 10,152,133,160,0,133 FFh 1 ;motor delay between steps A-276 I fKLOtor delay between steps 160,133,130,133,147,160,133 DONE DB FFh Tbl3_M259: DS DB DB FFh Tbl3J4260; DB DB 1 ;motor delay between steps 160,133,90,133 DB FFh Tbl3JM2Gl: DB DB DB Tbl3_M262: DB DB DB FFh Tbl3_H263r DB m DB Tbl3_M264: 7 ;motor delay between steps 190,133,100,133 FFh 7 ; motor delay between steps 60,133,140,153,0,0,133,150,133 1 ; MOTOR DELAY BETWEEN STEPS 155,133,160,133,120,110,133 FFh 10 ;mot or delay between stepS 190,133,0,0,0,0,1!Q,0,0,0,133 DB FFh Tbl3_H265: DB DB DB FFh ;END LIGHT 7 END GEORGE (P/Ofc/98 J fDARK ;GEORGE 07/08/98 Tbl3_M266; DB DB DB Tbl 3_M2 67 J DB DB 1 ;motor delay between steps 60,133,160,133 1 jmotor delay between steps 150,133,160,133,120,112,0,0,0,0,0,0,0,0 H 133 FFh 1 ;motor delay between steps DONE RB 150,133,120,112,0,0,0,0,0,133,149,0,0,133 DB FFh Tbl3_M268; DB 10 DB DB DB TbX3_H269i DB DB DB Tbl3_M270: DB DB ;motor delay between steps 150,133,112,133,120,133,148,133,118,0,0,0,133,146,133 147,0,0,0,0,0,0,133 FFH f end DONE RB 1 ;motor delay between steps DONE RB 10,20,123,115,123,115,123,115,133 FFH ; end 1 ;motor delay between steps DONE 190,133,120,133,112,0,0,0,0,0,0,130,112,133 Tbl3 w H271: DB 1 ; motor delay between steps DB 147 t 155,135,149 DB 133,149,0,0,0,133 ;SEQ6 AGE4^SEQ14 AGE 4 LIGHT js DB FFH ;end Tb’3_M272: DB 1 ; motor delay between 6 taps DB 150,133,0,0,0,159,133,150,0,0,133 DB 145,137,144,133,117,125,117,133 DB FFH ; end DONE Tbl3_M273j DB 1 ;motor delay between steps DB 145,155,133,120,115,133,190,133 DB 0,0,0,150,0,0,0,0,0,0,0 ( 0,133 DB 0,0,0,0,0,0,0,0,0,0,115,133 DB FFH ;end Tbl3„N274! DB 1 ;motor delay between steps DB 150,133,150,0,0,0,133,0,0,0,0,120*115,0,0,0,0,0,0,133 DB FFH ;end Tbl3_M275 i DB 10 ; mo tor delay between steps DB 150,133,0,0,0,150,0,0,0,133,0,120,133,120,133,155,0,0,0,0,133 DB FFH ;end Tbl3_K27 6: DB 1 ;motor delay between steps DB 190,0,0,0,0,133,0,0,0,0,0,148,133,118,133,0,0,0 DB 146,133,147,0,0,0,0,0,0,133 DB FFH jend Tbl3_M277i DB 1 ;motor delay between steps DB 190,133,120,133,112,0,0,0,0,0,0,130,112,133 DB FFH ;end Tbl3_K278: DB 1 ;motor delay between steps DB 60,133,60,133,146,154,133 DB FFH ;end Tbl 3^*27 9; DB 1 jmotor delay between steps DB 190,133,0,0.0,110,0,0,0,0,133 DB FFH ;end Tbl3_H280 i DB 10 ;motor delay between steps DB 157,133,0,0,0,116.0,0,0,133,190,155,0,0,0,133 DB FFH ;end Tbl3JM281j DB 1 ;motor delay between steps DB 190,155,0.0,0,133,119,0,0,0,0,0,0,133 A-278 DB DB Tbl3_K282: DB DB Db Tbl3_H283; DB DB DB ; Tbl3_M28 4: DB DB DB Tbl3_M285: DB DB DB Ttol3_M286; DB DB DB DB Tbl3_M287: DB DB DB Tbl3,JK28fi: DB DB DB DB ; Tbl3_M289: DB DB DB DB INVERT js DB ;END GEORGE ;END DARK I ; SOUND Tbl3^jW290 i 146,133,147.0,0,0,0.0,0,133 FFH ; end 1 ;motor delay between steps 60,133,75,83,78,83,78,133 FFH ; end 1 ;motor delay between steps 145,155,133,120,115,133,72,0,0,0,0,0,92,133,190,133 FFH ;end 1 ;motor delay between steps 190,133,0,0,0,110,0.0,0,0,133 FFH ;end 10 ;motor delay between steps 150,133,0,0.0,116,0,0,0,133.190,155,0,0,0,133 FFH ;end 1 ; motor delay between steps 190,155,0,0,0,133.119,0,0.0,0,0,0,133 147,0,0,0,0,0.0,0,0,0,133 FFH ;end 1 ;motor delay between steps 190,133,110,0,0,0,0,0,133,112,0,0,0,133 FFH ;end 1 ;motor delay between steps 110,0,0,0,133,115,133,147 133,190,133 ;SEQ7 AGE4/SEQ15 AGE 4 LIGHT js FFH ;end 1 ; motor delay between steps 145,155,133,0,0,0,0,120,115,133,150,133 160,0,0,0,0,190,0,0,0,0,0,0,0,0,0.133 0,0,0,0.0,0,0,0,0,0,133 ;SEQ8 AGE4/SEQ 16 AGE 4 FFH ;end 07/08/98 1 ; mot or delay between steps 155,133,0,0,0,0,125 115,145,155,133 ;5l~Al/S9-Al/Sl-A2 SOUND js FFH fetid ;59“A2/S1-A3/S9-A3 SOUND js 1 100,0,0,0,10 ;motor delay between steps •V» DB 0,0,0,0,0,0,0 DB 0,0,0,70,0,0,0,0 ;S2-A1/S10-A1/S2-A2 SOUND js DB 0,0,100,0,0,0,133 ;S10-A2/S2-A3/S10-A3 SOUND js DB FFH ;end ;S2-A4 SOUND js Tbl3_M292j DB 1 .-motor delay between steps DB 110,0,0,133,0,0,0,0 DB 0,0,155,0,0,0,0 DB 133,120,0,112,0 DB 148,0,0,0,0,0,133 ;S3-A1/S11-A1 SOUND js DB FFH ;end Tbl3_M293: DB 15 ;motor delay between steps DB 110,0,120,0,0,0,0,0 DB 145,0,0,0,155,115 DB 118,0,0,0,0,133 ; 54-Al/S12-A1 SOUND js DB FFH ;end Tbl3_M294; DB 1 ;motor delay between steps DB 115,0,0,0,148 DB 115,0,0,133 ;S5-A1/S13-A1 LIGHT (with say/ro2 ) js DB FFH ;end Tbl3_M295: DB 1 ;motor delay between st#ps DB 155,133,122,0 ?S6-A1/S14-M/S6~A2 SOUND js DB 115,145,120,0,0,133 ;S14-A2/S6-A3/S14-A3 SOUND js DB FFH ;end Tbl3_J4296; DB 1 DB 14 150 DB 125,115 DB 0,0,0,0,133 DB FFH ;end Tbl3_M297i DB 1 ;motor delay between steps DB 115,0,0,148,0,0,0,0 DB 138,0,0,0,148,0,0,0 DB 0,0,0,0,133 ;S8-A1/S16“A1/S8-A3/Si6-A3 SOUND js DB FFH ;end Tbl3„M290: DB 1 ;motor delay between steps DB 110,0,0,133,0,0,0,0 DB 0,0,155,0,0,0,0 DB 133,120,0,112,0 DB I4fi,0,0,0,0,0 r 133 IS3-A2/S11-A2 SOUND js DB FFH ; end Tbl3„M299 i DB 1 jmotor delay between steps DB 110,0,120,0,0,0,0,0 DB 145,0,0,0,155,190 DB 0,0,0,0,0,0,160,0,133 ;S4-A2/512-A2 SOUND ja DB FFH ; end ; mo tor delay between steps ; S'! -A1/S15-A1 SOUND twith s&yfta2} js A-280 Tbl3_M300s DB 1 ;motor daisy between steps DB 165,0,0,0,190,0,0 jS5-A2/S13-A2 SOUND (with say/m2J j s DB 0,0,165,0,0,0,0,133 ;S5-A3/S13-A3 SOUND (with say/mSJ js DB FFH ; end ;S5-A4 SOUND (with say/t&2) js Tbl3_M301: DB 1 ;motor delay between steps DB 115,0,0,0,0,145,0,0,165 ;S7-A2/S15-A2 SOUND (with say/mS } ] s DB 0,0,190,165,0,0,0,133 DB FFH ; end Tbl3_M302: DB 1 ;motor delay between steps DB 115,0,0,148,0,0,0 DB 0,0,0,0,133 ;S8-A2/S16-A2 SOUND js DB FFH ! end Tbl3_H303 s DB 1 ;motor delay between steps DB 110,0,0,133,0,0,0,0 DB 0,0 155,0,0 DB 133,0,112,0 DB 148,0,0,0,0,0,133 ;S3-A3/SI1-A3 SOUND js DB FFH ; end J Tbl3_M3Q4 : DB 1 ;motor delay between steps DB 110,0,120,0,0,0,0,0 DB 160,0,0,0,190 DB 160,0,0,0,0,133 ;S4-A3/S12-A3 SOUND js DB FFH ;«md ;S4-A4 SOUND js Tbl3_M3 05: DB 1 ;motor delay between steps DB 115,0,0,0,0,160 DB 0,0,190,0,0,0,0 DB 0,165,133 ;S7-A3/S15/A3 SOUND (with Say/ra2) je DB FFH ;eno ;S7-A4 SOUND (with say/m2) js Tbl3_M306: DB 1 ; motor delay between steps DB 157,0,0,0,133 DB 0.0,120,0,0,0 DB 133,150,0,0,0,0,133 jSl-A4 SOUND js DB FFH ; end Tbl3JM307: DB 1 ,-motor delay between steps DB 110,0,0,133,0,0,0,0 DB 0,0,155,0,0 DB 133,0,112,0,0,0 DB 14@,0,0,0,0,$,0,0,0,133 ,*S3-A4 SOUND js DB FFH i end Tbl3_H308: DB 1 ;motor delay between steps DB 157,0,0,0,133 DB 0,0.120,0,0,0 DB 133,150,0,0,0,0*0,0,133 ?S6-A4 SOUND js DB FFH ;end Tbl3_M3G9: DB 1 ?motor delay between steps DB 115,0,0,148,0,0,0,0,0,0,0,0 DB 138,0,0,0,0,0,148,0,0,0 DB 0,0,0,0,133 ;S8-A4 SOUND js DB FFH ;end 7END GEORGE 7 END SOUND 7GEORGE 07/09/98 ; TILT Tbl3_M310: DB 1 ;motar delay between steps ;DB 170,170,0,0,0 DB 170,0,0,0,0 DB 0,0,0,0,133 ;S1 A1/S4 A1/S2 A4 TILT js DB FFh Tbl3j*311: DB 1 ;motor delay between steps DB 125,0,0,0,133,120,145,110,133 ;S2 A1 TILT js DB FFH Tbl3_M3l2; DB 1 ;motor delay between steps DB 150,133,145,133,12Q P 133 ;S3 Al TILT js DB FFh Tbl3_M313: DB 1 ;motor delay between steps DB 100,0,0,0,0 DB 0,0,0,0,133 ;55 A1/S4 A2/S2 A3/S2 A4 TILT js DB FFh Tbl3„M314: DB 1 ;motor delay between steps DB 120,100,0,0,0,0,0,0,70,80,90 DB 70,85,100,0,0,133 ;S6 Al TILT js DB t Fh Tbl3__M315: DB 1 7 motor delay between steps DB 125,133,100,133,145,0,0,160 DB 190,0,0,175,160,133 Al TILT S6 A2 TILT js DB FFh Tbl3„M316: DB 1 ;motor delay between steps DB 145,133,145,160,145,160 DB 0,0,0,0,0,0,190,0,0,0,0,0 DB 0,0,0,0,0,0,0,150,133 ;SB Al TILT (with say/m5J js DB FFh Tbl3_M317; DB 10 ;motor delay between steps DB 160,0,0,0,0,0,0,0,190,133 ;S9 Al TILT/S9 A2 TILT js DB FFh TbI3_M316: DB 10 ; motor delay between steps A-282 4 . - DB 145,165,0,0,0,0,0,0,0,0,0,0 DB 190,0,0,180,100,133 ;SlO Al TILT/SlO A2 TILT js DB FFh Tbl3_M319: DB 1 /motor delay between steps DB 0,120,0,0,133,141 DB 133,120,0,0,0,133 ;Sll Al TILT (with say/m2 > js DB FFh Tbl3_M320; DB DB DB DB 1 ;actor delay between steps 150,133,123,0,0,133,142 0,0,150,0,0,0,0,0,133 ;S12 Al TILT js FFh Tbl3_M321: DB 1 ;motor delay between steps ;DB 200,170,170,0,0,0,0,133 ;S13 Al / £15 A3 TILT js DB 200 ( 170,0,0,0,0,0,133 ;S13 Al / £15 A3 TILT js DB FFh Tbl3_M322: DB DB DB ThI3_M323* DB DB DB DB Tbl3_K324: DB DB js DB Tbl3_M32 5: DB DB DB Tbl3„M326: DB DB DB DB Tbl3„M327: DB DB DB DB DB Tbl3_M328; DB DB DB DB Tbl3_#329; DB 1 ;motor delay between steps 170,0,0,0,0,133,126,130,116,131 ;S15 Al TILT j FFh 1 j motor delay betweer steps 155,0,0,0,0,IBS 160,0,0,133 ;S1G Al / S15 A2 / £13 A3 TILT js FFh 1 ;motor delay between steps 170,160,0,0,0,0,0,133 ;SI A2/S3 A2/S1 A3/fel A4 TILT FFh 10 ; motor delay between steps 120.145.110.133 ;S2 A2 TILT (with say/ml6) js FFh 10 ;motor delay between steps 120,100,0,0,0,0,0,0,133 148,133,142,115,0,0,133 ;S5 A2 TILT js FFh 1 ;motor delay between steps 145,133,145,160,145,160,0,0,0,0,0,0 190,0,0,0,0,0,0,0,0 150.133 ;S7 A2 TILT (with say/m5) js FFh -J-- W- 1 ;motor delay between steps 145,0,0,160,0,0,0,0 0,0,0,0,0,0,133 ,-S8 A2 TILT (with say/m5) js FFH ;end m /motor delay between steps DB DB DB Tbl3_M330i DB DB DB DB Tbl3_M331: DB DB DB Tbl3_H332: DB DB DB DB 0,120,133 r 143 118,0,0,0,133 FFH ;©nd ;Sll A2 TILT (with say/m2) js 1 ;motor delay between steps 150,133,123,0,0,133,142 0,0,150,0,0,0,0,0,133 ;S12 A2 TILT js FFH ;end 1 motor delay between steps 120,150,133 ;Si3 A2 TILT (with say/m5} js FFH ;end 1 ,-motor delay between steps 120,0,0,0,0.150,0,0,0 160,0,0,0,133,110.0,0,133 ;S14 A2 TILT js FFH i end Tbl3_H3 3 3; DB 10 ; mot or delay between steps DB 155,0,0,0,0,190,0,0,183,0,0,0 DB 175,0,0,0,162,0,0,0,0,0,0,0,133 DB 0,0,120,115,110,115,105,133 DB 145,155,165,0,0,0,0 DB 0,0,0,0,0,133 ;S16 A2/S14 A3/S14 A4 TILT js DB FFH ;end Tbl3jG34: DB DB DB 10 ,-motor delay between steps 120,100,0,0,0*0,0,0,133 ;S3 A3 TILT js FFH ,■ end Tbl3_H335: DB DB DB DB 1 ;motor delay between steps 145,133,120,117 110,0,0,133 ;S4 A3/S4 A4 TILT (with say/ro26) js FFH ;end TbX3_J1336 : DB DB DB DB Tbl3„M337; DB DB DB DB DB Tbl3_M338: DB DB DB DB 1 i motor delay between steps 145,165,0,0,0,0,0,0,0,0,0,0,133 120,133,145,155,0,0,0,133,115,0,0,0,133 ; 54 A3 TILT js FFH *end 1 ;motor delay between steps 145,133,122,147,139,160 190,0,0,0,0 0,0,0,0,155*133 ,-S6 A3 TILT (with say/m5 } js FFH ;end 1 ;motor delay between steps 145,165,0,0,0,0.0,0,0 0,0,0,0,0,0,133 ;S7 A3/S7 A4 TILT (with say/mS ) js FFH ;end A-284 Tbl3_J«339j DB 1 ; motor delay between steps DB 145, 165,0 r 0,0,0,0,0,0 DB 0,0,0,0,0,0,190,133,155,133 ?S8 A3/S8 A4 TILT js DB FFH ; end Tbl3_M340: DB 1 ;motor delay between steps DB 0,0,0,110,0,0 DB 115,0,0,0,0,0,0,133 ; S9 A3/S9 A4 TILT (with say/m9] ja DB FFH ;end ; Tbl3_M341: DB 10 ;motor delay between steps DB 165,0,0,0,0,0,0,0,0 DB 0,0,190,180,190,133 ,'S1Q A3/SI0 A4 TILT (with say/mlfi)js DB FFH ;end Tbl3_M342; DB 1 ;motor delay between steps DB 143,118,0,0,0,0,0,133 ;S11 A3/S15 A4 TILT [with say/m2t34 ) js DB FFH ;end Tbl3_M343: DB 1 ;motor delay between steps DB 145,150,145,160,133 ;S12 A3 TILT (with say/mS* js DB FFK f end Tbl3_JM344 : DB 10 ;motor delay between steps DB 148,155,0,0,0,0,138,148,155 DB 0,0,0,0,133,125,120,115,133 ;516 A3 TILT (with eay/mS)js DB FFH ;end Tbl3JH345: DB 1 ?motor delay between staps DB 155,0,0,120,0,0,0,0,133 ; S3 A4 TILT (with say/m26) js DB FFH ;end Tbl3_M346; DB 1 ;motor delay between steps DB 145,165,0,0,0,0,0,0,0,0,0,0,133 DB 120,133,145,125,0,0,0 DB 133,115,0,0,0,133 ;S5 A4 TILT js DB FFH ; end ; Tbl3_M347: DB 10 imotor delay between steps DB 115,133,120,160 DB 0,0,0,0,0,190,0,0,0,0 DB 0,0,0,0,0,0,0,0,155,133 ;S6 A4 TILT (with say/m5 } js DB FFH ;end DB 0B £3 DB FFH Tbl3_M349: DB DB DB FFH Tbl3_H35D: DB DB DB DB DB FFH TEND TILT ;END GEORGE ;GEORGE ;IR 07/09/98 Tbl3„H35l: DB DB DB Tbl3_M352: DB DB DB ; DANGER Tbl3j43S3: DB DB DB FFh Tbl3_M354i DB DB AGEl DB TbI3__M3 55: DB DB DB DB FFH Tbl3_H356: DB DB DB Tbl3_M357i DB DB ir agel DB FFh Tbl3_M358 t DB 10 DB DB FFh Tbl3_M359: 1 ;motor delay between steps 120,133,115,133,155 0,0,0,0,0,0,133 ;S11 A4 TILT (with say/m2i js ; end 1 ;mator delay between steps 145,155,115,133 ;S13 A4 TILT (with say/raS) js ,- end 5 ;motor delay between steps 145,158,0,0,0,0,130,147*155 0,0,0,0,0,0,133 125,120,115,133 ;SJfi A4 TILT (with say/m5 \ js ;end 20 ;motor delay between steps SGTEST 120,100,133 ; seql,seq2 r seq3,seq4 IR age 1 FFh 4 6 ;motor delay between steps SGTEST 115,100,75,133 ;seq5 ir age 1 FFh 30 ;motor delay between 115,130,100,70 ;SEQ6 (DANCE,WAHJ ir 1 ?motor delay between 133,145 r 155,190,133,155,175,145,133 steps AGE1 steps ;SEQ6 (DO DO DGj FFh 8 ;motor delay between steps 145,115,145,133,145,115,145,133,0,0,0,0,0 125,110,133,0,160,0,0,0,133 ; end 1 ;motor delay between steps 0 FFh ; empty space 1 ;motor delay between steps 120,115,110,105,100,80,100,120,115,100,45,133 ;seqB ; motor delay between steps 120,115,100,80,133,145,160,133 ;seq9 ir agel DB DB DB agel DB Tbl3_M3 60: DB DB DB DB agel DB 1 ;motor delay between steps 115,133,140,145,133,160,100 173.167.160.150.173.167.160.140.145.133 ?seql0,ll ir FFh 1 ; motor delay between steps 120,107,122,113,100,75,90,80,88,100,0,0,133 120,107,122,113,100,75,90,80,B8,100,0,133 146.140.155.133 ;seql£ ir FFh Tbl3_M36l; DB 5 ; mo ter delay between steps DB 115,125,100,10,0,0,0,0,0,0,0,0,0,0.0,Q,0 f 0,0,0,0,Q,0, r 0,0,0 DB 0,0,0,0,0,0,0,0,0,0,75,ao, as, SO,95,100ai5 DB 110,118,100,0,133 ;seql3,l4 ir agel DB FFh Tbl3_M362: DB 10 DB 160,0,0,ISO,160,0,0,133,100,0,0,0,133 ;seql5 ir agel DB FFh ; DANGER SLEEP Tbl3^l363i DB 30 ;10 ;motor delay between DB B5,40,30.85,40,30,0,05,40,30,0.85,40,30,10 ;seq!6 ir agel DB FFh Tbl 3_M3 64: DB 1 ;motor delay between steps DB 125,113,125,llfi,105,133 ;seqi,2,3 ir age2 DB FFh Tbl3_K3 65: DB 10 ;motor delay between steps DB 125,113,125,118,ICS,133 ;SEQ4,5 IR AGE2 DB FFh Tbl3_M3 66: DB 10 jmotor delay between steps DB 14 5,155,140,145,142 150,0.0,0,0,0,0,0,133 seq6 ir age2 DB FFh Tbl3_M367j DB 5 ;motor delay between steps DB 10,40,10,40,133,143,140,145,143,145 ,-DB 133 DB 100,133 DE 125,113,133 ,*seq7,8 ir age 2 DB 125,113,133 ;seq7,B ir age 2 DB FFh TblfpOfiB; DB 10 ;motor delay between steps DB 125,115,105,0,0,133.145,143,155,133,100,133 ■ seq9 ir age2 DB FFh Tbl3_Jl3 69: DB DB ; DB ,-seqlQ ir age2 DB 123,115,110,100*0,0,0,0,0,0,0,0,0,0,0,133 ;seql0 ir age2 DB FFH ;end Tbl3_K370; DB 1 ; motor delay between steps DB 125,119,113,120,113,140,150,133 ;seqU ir age2 DB FFH ;end Tbl3_M371: DB 1 ;motor delay between steps DB 150,0,0,0,100,0,0,10.0,0,0,0,0,0,0,0,0,0,0,0,0 DB 0,0,0,G,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 DB 115,90,110,100,133 ;seql3,l4 ir age2 DB FFH ;end Tbl3_M372: DB 43 ; motor delay between steps DB 100,0,0,150,0,0,100,0,0,0,0,133 ;seql5 ir ag&2 DB FFH ;end t DANGEE SLEEP Tbl3_H3 73; DB 90 ; me tor delay between steps DB 55,40,30,85,40,30,85,40,30,10 ?seql6 ir age 2 DB FFH i end Tbl3j*374 : DB 1 ;motor delay between steps DB 115,145,140,160,133 ;seql,2,3,4,5 ir age3 DB FFH ;end Tbl3_M375: DB 1 ;motor delay between steps DB 120.0,0,145,138,150,120,105,133 ;seq6 ir age3 DB FFH ;end Tbl3_M376: DB 1 + motor delay between steps DB 115,0 r 145,155,0,0,136,150,145,190,151,133,150 DB 145,190,151,0,133 ;seq7.8 ir age3 DB FFH ;end Tbl3_H377; DB 1 ;motor delay between steps DB 120,123,112,133,143,151,160,133 ;seq9 ir age3 DB FFH i end Tbl3_M37S: DB 1 ;motor delay between steps 1 ;motor delay between steps 125,120,115,113,110,105.123,103 123,115,110,100,100,100,100,0,0,0,0,0,0,0.0,133 A-288 ,'seqll ir age3 OB DB Tbl 3_M379 ; DB DB DB DB DB Tbl3_K380: DB DB DB DB Tbl3„M381: DB DB age a DB Tb23_H382; DB DB DB i Tbl3jl383: DB DB DB DB i Tbl4„M384: DB DB DB age4 DB 1 ^ 10065 ; DB DB DB DB DIALOGUE 120,122,115*125,112 # 150*0*0,0,133 FFH rend 1 ? motor delay between steps 115*10,0*0*10,0,0,0*0,0*0*0,0,0*0*0,0,0 0 , 0 , 0 , 0 , 0 , 0 , 0 * 0,0 145,110*0,0,0*0*0,0,133 ;seql3,14 ir age3 FFH ;end 12 ;motor delay between steps 117,0,0,0,0,0,0*133,0,0,0,0*0,0,0,100,0,0,0*0*30 100,0,0,0,0,0*0 ( 0,0*0,0,0,0*0 * 133 ;seq!5 ir age3 FFH ;end 5 ;motor delay between steps 120,150,110* 0,0,0*133 ;seql*2,3,4,5 ir FFH ;end 10 ;motor delay between steps 120,110,145,155*100,133 ;seq6 ir age4 FFH ;end 8 ;motor delay between steps 145,115,145,133,145,115,145,133*0,0,0,0,0 125,110*133*0,160*0,0,0,133 FFH ;end 1 ;motor delay between steps 115,133,143,148*136,160,180 173*167*160,180*173,167,160*140*145,133 ;seq9 ir FFH ;end 1 ; mo tor delay between steps 116,0,0,155,0*0,133,0,0,118*0,133,0*0,0.0,110 0,0*0,133,120,107,122,113,100*75,90*80.88,100*133 FFH ; end SAY NUMBERS MODIFIED TO MATCH CORRECT Tbl4_M3S6 : DB DB DB 1 ,-motor delay between steps 120*123,112*133,143*151*160,133 FFH ;end Tbl4_M387; DB DB DB Tfcl4_M388; DB DB ;motor delay between steps 120,0,0,145,110*145,110,0,0,0,0*0,133 FFH jend 1 ; motor delay between steps 120*110,133 fQK ;seq!4 ir age4 A-m BB FFH ;end Tbl4_K389: EB 7 motor delay between steps DB 150,0,130,0,100,0,133 ;YAWN DB FFH ;end 7 DANGER BLEEP Tbl4_M390: OB 90 ; motor delay between steps DB 0,0,0,85,30,0,20,0,85,30,0*20,0,85,30,0,20,0,85,10 DB FFH ;end ;END GEORGE 07/09/9S ;END IR ; FURBY SAYS: {LIGHT) DMH Tbl4_M391; DB 10 DB 110,133 ; DB 110,120,133 DB FFH ; end Tbl4_M392; DB DB DB Tbl4_M393: DB DB DB / Tbl4_M394: DB 10 ;motor delay between DB 140,150,0,0,133 DB FFH Tbl4_M395: DB 10 f motor delay between steps DB 160,133 f (ME) DB FFH ;end Tbl4_M3§6; DB 1 ; motor delay between steps DB 120,130,120,133 ; ME ME DB FFH ;end Tbl4_M397 ; DB 1 ;motor delay between steps DB 115,130,110,133 z DO MOH DB FFH ;end l Tbl4„M398: DB 1 ; motor delay between steps DB 120,130,110,133 ;TOH LOO DB FFH ;end ; dmh no light 1 Fmotor delay between steps 150,0,0,0,115,0,0,0,0,133 FFH t end ; dmh loud sound 30 ;motor delay between steps 150,0,0,0,115,0,0,0,0,133 FFH ;end ; LISTEN DMH motor delay between steps LIGHT {furby says) LIGHT (furby says) A-290 ' ‘ _• # -|g Tbl4_M399: : }sir DB 1 ; motor u*ju,y between steps DB J FFH i end ^ J4400: DB 1 ; motor delay between steps DB Tbl4_M4Ql: FFH ;end ; st« t diagnostic DB 1 ; motor delay between steps DB FFH ;end ; key press be^ Tbl 01402: DB 1 ;motor delay between steps DB FFF ; end ; pass beep Tbl4_H403: DB 1 ;motor delay between steps DB FFH ; end ; f ai1 beep Tbl4„tf4C4: DB 1 7 mo t or delay between steps DB FFH ; end Tbl4_M405: DB 1 ;motor delay bet een steps DB 10,200,10,134 ; motor cal DB FFH ; end TbI4_M406: DB 1 ;motor delay between st os DB 120 ; teed 1 DB FFH ; end Tbl4_M407 i DB 255 rmotor delay between , steps DB 0,134 ; feed 2 DB FFH ; end Tbl4_M406: DB 1 ;motor delay between steps DB 30 ; light pass DB FFH ; end TblOH409: DB 1 .motor delay between steps a 160 ; sound pass DB FFH ; end Tbl4_M410: DB 1 r motor delay between Steps DB 10 ; s1eep DB FFH ; end Tbl4_K411: ; PEEK-BOO (HIDE AMD SEEK ) DHM DB 20 ;MOTOR DELAY BETWEEN STEPS DB 155,133, 0,0,147,133 DB FFh r A-291 1 Tbl4_,M412: DB DB DB DB ; DB Tbl4_M413s DB DB Tbl4J4414: DB DB Tbl4_H415 s DB DB Tbl4„M416: DB DB Tbl4_M417i DB DB Tbl4_H418: DB DB Tbl 4__M419; DB DB Tbl4_^420j DB DB Tbl4_M421: DB DB Tbl4_J4422: DB DB Tbl4_H423t DB DB Tbl4_M424: DB DB Tbl4jH425: DB FFH FFH 1 FFH 1 FFH 1 FFH 1 FFH "FH 1 FFH 1 FFH 1 FFH 1 F'H 1 FFH 1 FFH 1 FFH 1 .■ feed dmh ; motor delay between steps 165*0,0,0,0,G,Q,150 r 0,0/165,0,0,0,0,0,0,150 0,0,165,0,0,0.0,0.0.133 ;(AAAAH} ; end ; end ;motor delay between steps ; end motor delay between steps ; end /motor delay" between steps ; end *mot^r delay between steps ; end 1 /motor delay between steps ; end ;moCOt delay between t’ceps ; end ;motor delay between steps ; end ;inr- k ,r delay between steps ; end ;motor delay between steps ; end ;motor delay between steps ; end ;motor delay between steps : end ;motor delay between steps ; end /motor delay between steps ; (AAAAKj DB FFH Tbl4_M426; DB 1 DB FFH *4l4_M427t DB 1 DB FFH Tbl4_M428: DB 1 DB FFH Tbl4_H429: DB 1 DB FFH Tbl4„M43G: DB 1 DB FFH Tbl4_M43‘: Tbl4_M432: Tbl4_M433; Tbl4_M434: DB I DB 0 DB FFH Tbl4_H435: DB 1 DB 0 DF FFH Tbl4_mi6; DB 1 DB 0 DB FFH Tbl4JM437: DB 1 DB 0 DB FFH } Tbl4_M43Si DB 1 DB G DB FFH Tbl 4 „M 439 : DB 1 DB G DB FFH J Tbl4_M443: DB 1 ; end ;motor delay between steps ; end ; mo tor delay between steps ;end ;motor delay between steps ; end ;motor delay between steps : end ;motor delay between steps ; end ;motor delay between steps ; end ;motor delay between steps ; end ;motor between steps ; end ;motor delay between steps ; end ;motor delay between steps ; end ;motor delay between steps i end ;motor d^lay between steps A-293 I ? ' t' r: ^ 1 ^ ^ vl DB DB t Tbl4_M441: ; Tbl4_M442; Tbl4_M443. TbK_M444i TpL4,J!445: Tbl4_fC446: Tbl4_M447; Tbi4_M44S: Tbl4Jt449i Tbl4_M450: ; Tbl4_M45l* Tbl4_M452: ; Tbl4_M453; Tbl4__M4 54: f Tbl4JM455; Tbl4__M4 56: ; Tb. 4^1457 t ; Tbl4_M458 : J TbI4^M459: Tbl4_M460: Tbl4_M461i Tbl4_K462i Tbl4_M4G3: ; Tbl4_M464: Tbl4_M46$; i Tbl 4_M466 j Tbl4_K467- ; Tbl4_H46e ; Tbl4_H469: ■ I c FFH A-294 J Tbl4_H47Q: ; Tbl4__M47l: 1^14^472 t l TbI4jK473: i Tfol4_K474: Tbl4^475: Tbl4_M476i Tbl4_M477: Tbl 4_M47 6; Tbl4_M479; Tbl4__M480; ! Tbl4_H4 31 3 Tbl4_H482i Tbl4_M483: Tbl4_,'484 j T bH_M485: Tbl4__M4 86 ; Tbl4_M4 87: Tbl4__M48Pi Tbl4_K4 89; Tbl4„H490: TbI4_M491: Tbl4_H492: Tbl4_M4U3: J Tbl4_K4 94: Tbl4^495; Tbl4j449 6: Tbl4_M497: Tbl4_M498 \ Tbl4_M499: A-295 TbHjHSOO: Tbl4_K501r Tbl4_M502 Tbl4jW503: J Tbl4_W504: ; Tbl4_M505 i t Tbl4_M5Q6■ ; Tbl4_M507: Tbl4_H508: Tbl4„M509i Tbl4_M5lD: DB ID DB 10,200,134 DB FFH TblOtSU: DB 10 DB 10,200,10 DB FFH ;motor delay between steps ;«nd ; motor delay between steps i ;end A-296